github.com/mymmsc/gox@v1.3.33/util/containers.go (about) 1 // Copyright (c) 2015, Emir Pasic. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // Package containers provides core interfaces and functions for data structures. 6 // 7 // Container is the base interface for all data structures to implement. 8 // 9 // Iterators provide stateful iterators. 10 // 11 // Enumerable provides Ruby inspired (each, select, map, find, any?, etc.) container functions. 12 // 13 // Serialization provides serializers (marshalers) and deserializers (unmarshalers). 14 package util 15 16 // Container is base interface that all data structures implement. 17 type Container interface { 18 Empty() bool 19 Size() int 20 Clear() 21 Values() []interface{} 22 } 23 24 // GetSortedValues returns sorted container's elements with respect to the passed comparator. 25 // Does not effect the ordering of elements within the container. 26 func GetSortedValues(container Container, comparator Comparator) []interface{} { 27 values := container.Values() 28 if len(values) < 2 { 29 return values 30 } 31 Sort(values, comparator) 32 return values 33 }