2009-12-17 94 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比較器,這會導致不區分大小寫的排序。