Java8のStream API findFirstメソッドで一番最初の要素を取得する
findFirstメソッドで最初に取得できた要素を取得します。条件に一致する要素が複数の場合、Streamから順序が最も前にある要素を返します。
Employeeクラスがあるとします。
public class Employee {
private String name;
private int age;
public Employee(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Employeeのリストを作成して、一番最初の要素をfindFirstメソッドで取得します。findFirstメソッドの戻り値はOptional<T>です。
List<Employee> list = new ArrayList<Employee>();
list.add(new Employee("tanaka", 44));
list.add(new Employee("takahashi", 40));
list.add(new Employee("minami", 30));
list.add(new Employee("higashiguchi", 32));
list.add(new Employee("adachi", 200));
list.add(new Employee("rasubosu", 25));
Optional<Employee> emp = list.stream().findFirst();
emp.ifPresent(e -> System.out.println(e.getName() + " : " + e.getAge()));
ifPresentメソッドはConsumerを引数に取り、要素が存在する場合のみConsumerをその要素で呼び出してくれます。
empに要素が存在しない場合、Consumerは動作しません。Consumerのacceptメソッドは引数が一つあり、戻り値がありません。
関数型インタフェースConsumer
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
}
findFirstメソッドのほかにfindAnyメソッドがあります。
以下はOptionalクラスのifPresentメソッドです。valueがnullでなければConsumer#acceptメソッドが実行されます。nullの場合acceptメソッドが呼ばれないようになっています。
public void ifPresent(Consumer<? super T> consumer) {
if (value != null)
consumer.accept(value);
}
Java8のStream API findAnyメソッドで任意の要素を取得する

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^

コメント