※ 引述《vencees ()》之銘言:
: Hashmap<String, Integer> map = new HashMap<String, Integer>();
: 假設裡面已經有資料的話
: 要如何以value值排序...?
: 如果用map.values()把值的collection拿出來,再做排序
第一,使用 map.values() 後,若要另外排序
那就再使用另一個 collection 即可
例如
new TreeSet<Integer>(map.values());
就可以幫你把 map.values() 排好好的
因為你開了另一個 TreeSet 物件,所以就與原本的 HashMap 物件無關
* * * * * * * * * *
如果你除了原本 value 排序的需求之外,還要知道這個 value 所對應的 key 為何
那麼,你可以使用:
TreeMap<Integer, String> sortedValueToKeyMap = new TreeMap<Integer, String>();
for (Map.Entry<String, Integer> entry: map.entrySet())
sortedValueToKeyMap.put(entry.value(), entry.key());
這個 sortedValueToKeyMap 就是你所需要的
但是,若原本的 map.values() 有重覆的 Integer
那麼有些 key-value pair 會消失不見
(i.e. 原本的 map 中,有 "key1" -> 1 及 "key2" -> 1
但因為 1 重覆,所以 sortedValueToKeyMap 可能只剩下 1 -> "key2")
如果要把重覆 value 的 pair 都全部抓出來,
那麼,要自己寫一個 Comparable class 來定義 key-value pair 的大小順序
那這就是後話了
: 不會把<key, value>的對應弄亂嗎...?
: 如果會弄亂的話該怎麼做?
: ---
: google完之後還是不甚了解,所以跑上來問...懇請指教。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.250.129.52
※ 編輯: mgtsai 來自: 60.250.129.52 (01/08 17:43)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):