2012-11-24 116 views
1

我使用Guava multimap來存儲來自文本文件的數據。 文本文件數據的格式是這樣的:Java如何對multimap進行排序vs?

 
p1 10 
p2 30 
p3 40 
p1 20 
p2 50 
p3 60 
.. 
.. 

第一列是關鍵和第二是值。我想從最高到最低排序分數(值),但不知道如何排序多圖。 還是有更好的存儲來存儲這種數據?

我還以爲是做兩個數組列表,一個名稱,另一個用於分數有什麼其他的事情,雖然

我不知道它是可以鏈接兩個列表。

list1 = {p1,p2,p3} 
list2 = {10, 20, 30, 40, 50, 60} 

p1索引10和20.這種事情可能嗎?

+0

SortedMap > map = new TreeMap <>();如果你想要更多地告訴我... – Aubin

+0

請參閱[僅在Java中對鍵進行排序](http://stackoverflow.com/questions/5501468/having-a-multimap-sorted-on-keys-only-in -java) – Reimeus

回答

1

你可以嘗試這樣的事情: -

public static ImmutableMultimap<Integer, MyObject> indexOnScore(Iterable<MyObject> i) { 
    List<MyObject> sorted = Ordering.natural().onResultOf(myObjectToScore()) 
    .sortedCopy(i); 
    return Multimaps.index(sorted, myObjectToScore()); 
} 

另一種選擇可能是創建一個TreeMultimap並使用Ordering.arbitrary()作爲比較的值。