Java文档说“TreeSet保持其元素在内部排序”。
这里的排序意味着什么?这是否意味着排序?如果是这样,那么排序和排序之间有什么区别?
答案 0 :(得分:1)
是。除非提供比较器来定义排序顺序,否则它使用其元素类型的自然排序顺序(例如字符串的字母顺序,整数的数字顺序等)进行排序。
元素是按照它们的自然顺序排序的,或者是在创建时创建时提供的比较器,具体取决于使用的构造函数。
答案 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进行对比,后者在检索时不保证元素的顺序。