「Java8」ストリームAPIでString型リストの文字列の長さ最大値、最小値を取得

環境
JavaSE 1.8
Eclipse IDE 2019
関数
1.Optional<T> max(Comparator<? super T> comparator)
指定されたComparatorに従ってこのストリームの最大要素を返します。これはリダクションの特殊な場合です。
2.Optional<T> min(Comparator<? super T> comparator)
指定されたComparatorに従ってこのストリームの最小要素を返します。これはリダクションの特殊な場合です。

3.引数に以下を指定することで文字列長の(最大値)最小値を取得します
(strA, strB) -> strA.length() – strB.length()

使用例

package com.arkgame.study;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;

public class StreamTestDemo {

      // String型配列
      private static String cft[] = { "stu", "skill", "arkgame" };

      public static void main(String[] args) {
            // 文字列の長さが最大のもの取得
            List<String> lstA = Arrays.asList(cft);
            Optional<String> resOp = lstA.stream().max((strA, strB) -> strA.length() - strB.length());
            System.out.println("文字列の長さが最大の値: " + resOp.get());

            // 文字列の長さが最小のもの取得
            List<String> lstB = Arrays.asList(cft);
            Optional<String> resT = lstB.stream().min((strA, strB) -> strA.length() - strB.length());
            System.out.println("文字列の長さが最小の値: " + resT.get());
      }
}

実行結果
文字列の長さが最大の値: arkgame
文字列の長さが最小の値: stu

Java

Posted by arkgame