ハッシュ マップを反復処理して最初の 10 個の要素を見つける方法は?
質問する
130 次
3 に答える
0
一度だけの場合は、List に変換してから LinkedHashMap に戻すことで、HashMap を並べ替えることができます。
Map<String, Integer> map = new HashMap<>();
map.put("A", 13);
map.put("B", 11);
map.put("C", 27);
map.put("D", 38);
map.put("E", 25);
map.put("F", 12);
map.put("G", 25);
map.put("D", 35);
map.put("H", 28);
map.put("R", 13);
map.put("N", 24);
map.put("T", 37);
// Take a List copy of the Map
List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(map.entrySet());
// Sort the list by the Value
Collections.sort(list, new Comparator<Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
return (o1.getValue()).compareTo(o2.getValue());
}
});
// Create new Map (use LinkedHashMap to maintain order)
Map<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
for (Entry<String, Integer> entry : list) {
sortedMap.put(entry.getKey(), entry.getValue());
}
于 2016-10-07T12:39:00.160 に答える
-1
ほとんどの HashMap はいかなる種類の順序も保持しないため、すべてのキーを読み取って並べ替え、対応する値をハッシュから取得する必要がある場合があります。言語とサンプルコードを教えていただければ、誰かがさらに助けてくれるかもしれません。
于 2013-09-27T21:29:48.193 に答える