2013-02-10 42 views
1

我有一個基於以下結構嵌套樹形圖,然後將其從OFC「2」繼續:{具有相同的結構..排序樹形圖不真正工作

http://pastebin.com/uKwAVz5L

,正如你所看,它已經由「C13」子項(情節數)排序的..但是當我使用我的應用程序的樹形圖,它顯示了這樣的:

http://i50.tinypic.com/15o9vno.png

他們甚至不遠程排序..但我不明白爲什麼? :o

它在我的Android應用使用時同樣的問題..

乾杯

回答

1

這裏是TreeMap一些有價值的資料:根據

紅黑樹的執行SortedMap接口。 這 類保證,地圖將在按鍵的升序,按自然順序爲重點的類分類01​​(見Comparable), 或通過在創建時提供的比較,這取決於 構造函數用過的。

注意,順序由有序映射(無論是否提供了明確的 比較器)保持必須符合等於如果 此有序映射要正確實現Map接口。 (請參閱 Comparable或Comparator與 一致的精確定義等於。)這是因爲Map接口是根據 定義的等於操作,但是一個映射使用它的 compareTo(或compare)執行所有關鍵比較,方法,因此從排序映射的角度來看,這種方法認爲相等的兩個鍵相等。排序映射的 行爲定義良好,即使其排序爲 與equals不一致也是如此;它只是不服從Map界面的一般合同 。

您是否正確實施了上述方法?

Collections框架也有不同的實現(概述是here)。如果TreeMap沒有提供你想要的功能,你可以實現另一個功能並根據需要進行修改。

+0

EHMM,即時通訊不太清楚這意味着什麼:■? – smilykoch 2013-02-10 10:23:09

+0

但是你需要告訴我什麼部分的代碼:p? – smilykoch 2013-02-10 10:23:25

+0

這裏是我把地圖放在一起的代碼..我有點知道它不是超高效的,但我不能讓它在任何其他想法的工作..(其他優化思路,歡迎?) http:// pastebin 。com/AhpWZNg8 – smilykoch 2013-02-10 10:26:39

0

嘗試使用比較:

TreeMap map = new TreeMap<Obj1, Obj2>(new ObjComparator()); 

private class ObjComparator() implements Comparator<Obj1> { 
    public int compareTo(Obj1 o1, Obj1 o2) { 
     return o1.compareTo(o2); // do your logic here 
    } 
}