前提・実現したいこと
Java8にてListの中身をソートしたい
ソート条件はList内にあるMapの値となります
対象の値はを取得するキーは全て同じとなります
また、ソート条件を複数設定したい(これをうまく実装したい)
※ソート条件はMapのキーがTYPE、IDの値で昇順となります
Sampleソースコード
List<Map<String, String>> lstMaps = new ArrayList<>(); Map<String, String> map1 = new HashMap<>(); map1("ID", "2"); map1("TYPE","B"); map1("NOTE","まっぷ1"); lstMaps.add(map1); Map<String, String> map2 = new HashMap<>(); map2("ID", "3"); map2("TYPE","A"); map2("NOTE","まっぷ2"); lstMaps.add(map2); Map<String, String> map3 = new HashMap<>(); map3("ID", "1"); map3("TYPE","B"); map3("NOTE","まっぷ3"); lstMaps.add(map3); lstMaps.sort(Comparator.comparing(m -> m.get("ID"), Comparator.naturalOrder())); lstMaps.sort(Comparator.comparing(m -> m.get("TYPE"), Comparator.naturalOrder()));
試したこと
Collectionを使用したり、Streamを使ってみたりと試行錯誤のうえ、上記のSampleソースまでたどり着いたのですが、ソート条件が一つしか設定できずに同じ処理を2回記述するいまいちな実装となっています。
ソート条件でループすることくらいしか改善策が思い当たらなくはまっています。
因みにComparatorにthenComparingというメソッドがあり、これを使えたら便利なのですが、利用方法がわからず手をこまねいています
補足情報(FW/ツールのバージョンなど)
Win10
Oracle JDK 8
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/13 09:19
2020/07/14 04:33 編集