このデータ構造を並べ替えて、Key-Valueマッピングを保持するにはHashMap<String, Integer>
どうすればよいですか?キーではなく値で並べ替えたい。
Collection<Integer> counts = tableFrequency.values();
しかし、その後、キーマッピングが失われます。または、HashMapの代わりに使用できたより良い連想データ構造はありますか?
このデータ構造を並べ替えて、Key-Valueマッピングを保持するにはHashMap<String, Integer>
どうすればよいですか?キーではなく値で並べ替えたい。
Collection<Integer> counts = tableFrequency.values();
しかし、その後、キーマッピングが失われます。または、HashMapの代わりに使用できたより良い連想データ構造はありますか?
をその値で並べ替えるにはMap
、その値を取得しentrySet
て、カスタムで並べ替えることができますComparator
。
List<Entry<K,V>> sorted = new ArrayList<>(map.entrySet());
Collections.sort(sorted, new Comparator<Entry<K,V>>() {
public int compare(Entry<K,V> o1, Entry<K,V> o2) {
return o1.getValue().compareTo(o2.getValue());
}
};
TreeMap は、要素を追加した順序で保持します。それはあなたにとって完璧な答えのようです。
ただし、検索など、一部のアクションは HashMap よりもはるかに遅くなることに注意してください...
クラスTreeMap
はあなたが望むものです:
TreeMap treeMap = new TreeMap();
treeMap.put("One", new Integer(1));
treeMap.put("Two", new Integer(2));
Object obj = treeMap.get("Two");
System.out.println(obj);
要素を並べ替えるには、compare() メソッドを使用します。
あなたの新しい質問は値による並べ替えに関するものなので、これはこの投稿の複製です