こんにちはsekitakaです。
HashMapのキーでソートしたいなと思い調べたところ、TreeMapというものがあり便利だったので紹介します。
TreeMapはHashMap同様キーの重複がないMapです。
それに加えてキーでのソートが自動で行われます。
使い方
TreeMap<String,String> treeMap = new TreeMap<>();
treeMap.put("2","2");
treeMap.put("b","B");
treeMap.put("1","1");
treeMap.put("a","A");
treeMap.put("1","1(2回目)");
System.out.println(treeMap);
以下の結果が出力されます。
{1=1(2回目), 2=2, a=A, b=B}
期待したとおりキーでソートされ、キーの重複がなくなっています。
カスタムソート
デフォルトのソート順はJavaの自然順序付けですが、以下のようにコンストラクタにComparatorを指定することで、独自のソートロジックを指定することも可能です。
TreeMap<String,String> treeMap = new TreeMap<>(new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
// [略]カスタムソートのロジック
}
});
まとめ
いかがでしたでしょうか。Javaは標準ライブラリが豊富なので探せば色々と便利なクラスが見つかるものですね。