Answers:
Java使用“有序集合”来表示诸如List之类的集合,其中(与HashSet不同),该集合会记住元素应处于的顺序。因此,可以按顺序将元素添加到集合中的特定“位置” 。
Java使用“排序集合”来表示诸如SortedSet之类的集合,其中(与List不同),迭代器遍历该集合的顺序与指定的Comparator或元素的自然顺序一致。
因此,区别在于排序是否取决于值(“已排序”),还是元素独立于其值而具有的属性(“排序”)。
OrderedDict
在python中。但是在.NET中,“可排序”可枚举的接口称为IOrderedEnumerable
。因此,这取决于。只是说..
是的,尽管概念相似。
List
是一个有序集合:每个元素都有一个索引,该索引形成元素的顺序,但通常与元素本身的任何属性都不相关。
SortedMap
并且SortedSet
是已排序的集合,这意味着整个集合中的迭代将按照从元素本身派生的顺序进行。例如,如果您有a,SortedSet<String>
则字符串将根据字典顺序进行排序。
当外部排序与元素的排序顺序相同时,可以对排序的Collection 进行排序,但不必排序(例如,使用之后Collections.sort()
)。排序后的集合始终是隐式排序的(即始终有一个“第一个”元素,并且只要不添加另一个较小的元素,它就总是相同的)。
排序的集合与有序的集合
1.排序的集合
排序的集合是通过利用Java集合框架提供的排序功能来对集合进行排序。使用Java比较器从数据库读取数据后,排序发生在运行Hibernate的JVM的内存中。
如果您的收藏不大,将是一种更有效的排序方式。由于它发生在jvm内存中,因此可能会抛出“内存不足”错误。
2.订单收集
订单集合通过在查询中指定order-by子句对集合进行排序,以便在检索时对该集合进行排序。如果您的收藏非常大,它将是一种更有效的排序方式。与排序的集合相比,它是快速的。
IOrderedEnumerable
(有趣的是,它在.NET中不是非常一致。在.NET中称为“插入顺序”方面字典OrderedDictionary
,有些人认为与之相比是用词不当,IndexedDictionary
)。是的,在Java世界中(大多数地方也是),它们表示您的答案。有关更多信息,请参见此处。