JAVAでのHashMapのソート方法は?
Javaでは、HashMapは順序が定まらず、キーと値のペアを特定の順序で保存しません。HashMapの要素を並べ替えたい場合は、TreeMapなどの有序なコレクションに変換することができます。
TreeMapは、赤黒木をベースとした順序付けられたマップであり、キーの自然順序またはカスタムのComparatorに基づいてソートされます。次に、キーでHashMapをソートするためにComparatorを使用する例を示します。
import java.util.*;
public class SortHashMap {
public static void main(String[] args) {
HashMap<String, Integer> hashMap = new HashMap<>();
hashMap.put("Tom", 30);
hashMap.put("Alice", 25);
hashMap.put("Bob", 35);
hashMap.put("John", 40);
TreeMap<String, Integer> sortedMap = new TreeMap<>(new Comparator<String>() {
public int compare(String s1, String s2) {
return s1.compareTo(s2); // 按照键的自然顺序排序
}
});
sortedMap.putAll(hashMap);
for (Map.Entry<String, Integer> entry : sortedMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
結果の表示:
Alice: 25
Bob: 35
John: 40
Tom: 30
この例では、最初にHashMapを作成し、いくつかのキーと値のペアを追加します。次に、TreeMapを作成し、自作のComparatorを渡します。このComparatorはキーの自然な順序に基づいて比較を行います。最後に、putAll()メソッドを使用してHashMapの要素をTreeMapに配置し、entrySet()を使用して順序付けされたキーと値のペアを反復処理します。