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の大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント