在java中的列表/树集中排序意味着什么

时间:2011-12-28 01:31:34

标签: java

Java文档说“TreeSet保持其元素在内部排序”。

这里的排序意味着什么?这是否意味着排序?如果是这样,那么排序和排序之间有什么区别?

3 个答案:

答案 0 :(得分:1)

是。除非提供比较器来定义排序顺序,否则它使用其元素类型的自然排序顺序(例如字符串的字母顺序,整数的数字顺序等)进行排序。

  

元素是按照它们的自然顺序排序的,或者是在创建时创建时提供的比较器,具体取决于使用的构造函数。

来自TreeSet Javadoc

答案 1 :(得分:1)

来自Javadoc

TreeSet中的排序
  

基于TreeMap的NavigableSet实现。元素按照它们的自然顺序排序,或者在创建时创建时提供的比较器,具体取决于使用的构造函数。

此处“自然排序”表示该类可以实现Interface Comparable,它允许您指定compareTo()的行为。

您还可以使用TreeSet构造函数,该构造函数允许您指定一个Comparator类来指定排序类型:http://docs.oracle.com/javase/6/docs/api/java/util/TreeSet.html#TreeSet(java.util.Comparator

答案 2 :(得分:1)

“Ordered”表示存在可以检索元素的已定义顺序。这意味着当您遍历Collection时,您知道将获得元素的顺序。

在这种情况下,它的意思是“排序”(因为TreeSet根据给定的Comparator排列元素,即它对它们进行排序)。

在其他情况下(例如队列),它可能意味着“插入顺序”。

对于List,您可以自己指定顺序(通过为每个元素分配索引),List将按此顺序保留它们(这与插入顺序或任何排序顺序无关)。

将此与HashSet进行对比,后者在检索时不保证元素的顺序。