質問: 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
回答: thenComparingを使えば、複数キーのソートが可能です。 ``` lstMaps.sort(Comparator.comparing((Map m) -> m.get("TYPE")) .thenComparing(Comparator.comparing(m -> m.get("ID"))); ```