Java8のComparatorインタフェースで複合ソートする
Comparator.comparingやthenComparingを使用して簡単に複合ソートすることができるようになっていました。
SQLでいうorder by id,ageみたいな感じで昇順にソートしたり降順にソートしたりすることができます。
Comparator<Dto> comparator = Comparator.comparing(Dto::getWeight) .thenComparing(Dto::getHeight) .thenComparing(Dto::getAge);
Dtoは以下のような感じです。
public class Dto {
Dto(int age,String name,int height,int weight){
this.age = age;
this.name = name;
this.height = height;
this.weight = weight;
// アクセサは省略
}
ソートしたい場合に上記で定義したComparatorをsorted()の引数に指定します。
List<Dto> list = dataList.stream().sorted(comparator).collect(Collectors.toList()); // 注
これでlistが、weight(昇順),height(昇順),age(昇順)の順でソートされます。
注
注:Java16から以下メソッド追加されました。
.collect(Collectors.toList());
↓
.toList();

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^


コメント