ソートの観点から見た Java の Mapの種類とソートする方法を紹介します.
1.JavaのMap
Javaの標準ライブラリには次のMapがあります.
- 挿入順序を保持しないMap:HashMap
- 挿入順序を保持したMap:LinkedHashMap
- キー昇順Map:TreeMap
1.HashMapをソートしたい場合は、2. LinkedHashMap や 3. TreeMap の利用を検討してください.
他のMap型に変更出来ない場合や、LinkedHashMap / TreeMap でソート順を変更したい場合は ソートの実装を参考にしてください.
2.ソートの実装
実装方法
1 2 3 4 5 6 7 8 9 10 11 12 13 |
ArrayList<Integer> sortIndex = new ArrayList<>(sampleMap.keySet()); Collections.sort(sortedIndex, new Comparator<Integer>() { @Override public int compare(Integer lhs, Integer rhs) { return lhs - rhs; // ここで並び順を定義 } }); for (int i : sortIndex) { sampleMap.get(i); // Mapの値を利用 } |
コードの解説
最初に、keySet()でキーの一覧を取得して、ArrayListに詰め込みます.
その後、Collections.sortによってキーをソートします.
ソートされたキーを利用して、mapから値を取得します.
ソートや値を取り出す処理でキーを利用しない場合は、keySetの代わりに値を取得し、Collections.sortにかけるようにしてください.