「java8」Comparatorクラスでリストの要素を複数条件でソートするサンプル
説明
1.Comparator.comparingInt(String::length)
型Tからintソート・キーを抽出する関数を受け取り、そのソート・キーで比較するComparator<T>を返します。
2.Comparator.naturalOrder()
自然な順序でComparableオブジェクトを比較するコンパレータを返します。
Javaコード
package com.arkgame.study.java8; import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; public class ComparatorDemo { public static String kdf[] = { "Te234", "E2cd", "Celowpp", "Duuu56","Message" }; public static void main(String[] args) { List<String> targetLst = Arrays.asList(kdf); //複数条件のソート 文字列長さ アルファベット順 List<String>resLst =targetLst.stream().sorted( Comparator.comparingInt(String::length) .thenComparing(Comparator.naturalOrder())) .collect(Collectors.toList()); System.out.println("文字列長でソートする結果"); // ソートされたリスト for (String str : resLst) { System.out.println(str); } } }
文字列長でソートする結果
E2cd
Te234
Duuu56
Celowpp
Message