「Java8」Stream APIのfilterメソッドでクラス配列の要素を取得するサンプル

2020年11月9日

説明
1.Stream<T> filter(Predicate<? super T> predicate)
このストリームの要素のうち、指定された述語に一致するものから構成されるストリームを返します。
2.public static <T> Stream<T> stream(T[] array)
指定された配列をソースとして使用して、逐次的なStreamを返します。
型パラメータ:T – 配列の要素の型
パラメータ:array – 使用中に変更されないと想定される配列
戻り値: 配列のStream
Javaコード

package com.arkgame.study.it;

import java.util.Arrays;

public class StudentArrStreamDemo {

      // max element
      public static final int maxEle = 4;
      // age
      public static final int AGE = 20;
      // name
      public static final String STUNAME = "student";

      public static void main(String[] args) {

            // クラス配列の作成
            Student[] stuArr = stuoldArrFunc();

            // filterで新クラスの配列生成
            Student[] stuResArr = stunewArrFunc(stuArr);
            System.out.println("新クラスの要素の値:\n" + Arrays.toString(stuResArr));

      }

      // 元クラス配列の作成
      public static Student[] stuoldArrFunc() {
            Student[] stu = new Student[maxEle];
            for (int i = 0; i < maxEle; i++) {
                  stu[i] = new Student(STUNAME + i, AGE + i);
            }
            System.out.println("元クラスの要素の値:\n" + Arrays.toString(stu));
            return stu;
      }

      // 新クラス配列の作成
      public static Student[] stunewArrFunc(Student[] target) {
            Student[] stunewArr = Arrays
                        .stream(target)
                        .filter(stu -> stu.age > 22)
                        .toArray(Student[]::new);

            return stunewArr;
      }
}

実行結果
元クラスの要素の値:
[Student [stuName=student0, age=20], Student [stuName=student1, age=21], Student [stuName=student2, age=22], Student [stuName=student3, age=23]]
新クラスの要素の値:
[Student [stuName=student3, age=23]]

Java

Posted by arkgame