ハッシュマップをどのようにソートしますか?
HashMapは順序のない集合であり、並べ替えをサポートしていません。しかし、HashMapのキーまたは値に基づいて並べ替えることができます。
- キーによる並べ替え:
- HashMapのキーのセットをListに変換し、Collections.sort()メソッドを使用してListをソートする。
- HashMap<String, Integer> map = new HashMap<>();
// マップにキーと値を追加する
List sortedKeys = new ArrayList<>(map.keySet());
Collections.sort(sortedKeys);
// ソートされたキーのリストを反復処理して対応する値にアクセスする
for (String key : sortedKeys) {
Integer value = map.get(key);
System.out.println(key + “: ” + value);
} - 値に基づいて並び替え:
- HashMapのキーと値をListに変換し、Collections.sort()メソッドを使用して、値の大きさに応じてListをソートします。
- HashMap<String, Integer> map = new HashMap<>();
// mapにキーバリューペアを追加
List<Map.Entry<String, Integer>> sortedEntries = new ArrayList<>(map.entrySet());
Collections.sort(sortedEntries, (entry1, entry2) -> entry1.getValue().compareTo(entry2.getValue()));
// ソートされたキーバリューペアをイテレートし、キーと値をアクセス
for (Map.Entry<String, Integer> entry : sortedEntries) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + “: ” + value);
}
注意:キーまたは値が基本データ型であるHashMapに対してのみ、上記のソート方法が適用可能です。HashMapのキーまたは値がカスタムオブジェクトである場合、ソートを実現するためにはカスタム比較器(comparator)が必要です。