2016-06-10 75 views
0

裏面我有以下的樹形圖排序hasmap樹形圖

private TreeMap<Long, HashMap<Long, Entry>> index; 

項包含:

int tf //count 
ArrayList<long> off //positions 

對於樹形圖中的每個條目,我想通過TF的包含HashMap排序。在下面的圖片中,[3]的tf具有更大的tf值[0],所以我想將它移動到開始位置。我怎樣才能做到這一點?

enter image description here

回答

0

我相信,在你的問題的根本問題是,包含HashMap是沒有定義排序。其次,更通用的變量定義可能證明是有用的:

private SortedMap<Long, SortedMap<Entry, Long>> index; 

注意到我切換了Entry和Long的順序。這是因爲Google地圖只能根據關鍵字進行排序。您必須將Entry實現爲Comparable,或者在實例化Map時提供自定義比較器。

0

您不能訂購HashMap。試圖這樣做打破了HashMap存儲的方式,並找到添加到它的元素

0

你在這裏試圖做什麼(據我瞭解)是按樹的值排序,而TreeMap只能按鍵排序。更多細節在這裏 - TreeMap sort by value

您可以嘗試編寫自己的排序方法,並將排序結果存儲在linkedHashMap而不是Treemap中。這樣你就可以按照你添加到linkedHashMap的確切順序來訪問條目。 注意:每次更改都會發生在原始地圖上,您需要對其進行排序並將其移至不同的linkedHashMap。這非常笨拙。

您可能會考慮爲您的程序使用不同的對象模型。