2009-12-17 93 views

回答

7

他们不是; TreeMap使用red-black tree来管理数据,并且该树隐式地保持数据排序。迭代器所要做的就是遍历节点。

+0

谢谢你提供的有关红黑树的参考资料。根据这种技术,你可以告诉字符串值如何排列(即)如何JVM决定,一个字符串比父母更大(或者更小) – Hariharbalaji 2009-12-17 13:48:07

+0

@Hari:这是使用字符串的'compareTo'方法 – Fortega 2009-12-17 14:02:38

+3

更一般地说, TreeMap类期望元素实现该方法所属的Comparable接口。或者,您可以将Comparator接口的实现传递给TreeMap的构造函数,该实现允许它存储不实现Comparable的对象(或使用不同的排序顺序)。 – 2009-12-17 14:13:26

4

这些项目已经排序 - 这是通过使用Red-Black Tree在内部存储项目来实现的。

2

如果TreeMap存储实现Comparable接口(和String的对象)的对象,而不是使用.compareTo方法比较各个字符串并确定排序顺序。

另一方面,您可以在构建TreeMap时提供一个Comparator,它将使用该对象比较对象并确定排序顺序。您可以使用Comparators来比较没有实现Comparable的对象,或者执行不同的排序策略。例如,String.compareTo方法执行区分大小写的比较,但您可以提供String.CASE_INSENSITIVE_ORDER比较器,这会导致不区分大小写的排序。