在Java 8 Stream中,findFirst()
返回Stream中的第一个元素,而findAny()
返回Stream中的任何元素。
DemoFindFirst1.java
public class DemoFindFirst1 {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 2, 1);
Optional<Integer> first = list.stream().findFirst();
if (first.isPresent()) {
System.out.println(first.get()); // 1
}
Optional<Integer> first2 = list.stream().filter(x -> x > 1).findFirst();
if (first2.isPresent()) {
System.out.println(first2.get()); // 2
}
}
}
DemoFindFirst2.java
public class DemoFindFirst2 {
public static void main(String[] args) {
List<String> list = Arrays.asList("js", "java", "python", "C");
Optional<String> result = list.stream()
.filter(x -> !x.equalsIgnoreCase("js"))
.findFirst();
if (result.isPresent()) {
System.out.println(result.get()); // java
}
}
}
DemoFindAny.java
public class DemoFindAny {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Optional<Integer> any = list.stream().filter(x -> x > 1).findAny();
if (any.isPresent()) {
Integer result = any.get();
System.out.println(result);
}
}
}