Java8のStream API findAnyメソッドで任意の要素を取得する
findAnyメソッドで任意の要素を取得します。findAnyメソッドの戻り値はOptional<T>です。
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; } }
取得出来たかどうかを確認するにはisPresentメソッドを使用します。
List<Employee> list = new ArrayList<Employee>(); // 要素をaddしていない Optional<Employee> emp = list.stream().findAny(); emp.get(); // NoSuchElementExceptionが発生する
要素がない場合はgetメソッドで取得した場合にNoSuchElementExceptionが発生します。
その為、isPresentメソッドで要素が取得できたか確認したほうが良いです。
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().findAny(); if(emp.isPresent()) { // 存在する値がある場合はtrueを返し、それ以外の場合はfalseを返す System.out.println(emp.get().getName() + " : " + emp.get().getAge()); } else { System.out.println("no such element."); }
findAnyメソッドは任意の要素を返すので、必ずしも同じ要素が返るとは限らないです。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント