「java8」Comparatorクラスでリストの要素を複数条件でソートするサンプル

2020年11月2日

説明
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

Java

Posted by arkgame