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

コメント