「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