「Java8」Stream APIのfilterメソッドでクラス配列の要素を取得するサンプル
説明
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]]