Автор оригинала: mkyong.
В потоке Java 8 findFirst()
возвращает первый элемент из потока, в то время как find Any()
возвращает любой элемент из потока.
1. Найти первым()
1.1 Найдите первый элемент из потока целых чисел.
package com.mkyong.java8; import java.util.Arrays; import java.util.List; import java.util.Optional; public class Java8FindFirstExample1 { public static void main(String[] args) { Listlist = Arrays.asList(1, 2, 3, 2, 1); Optional first = list.stream().findFirst(); if (first.isPresent()) { Integer result = first.get(); System.out.println(result); // 1 } else { System.out.println("no value?"); } Optional first2 = list .stream() .filter(x -> x > 1).findFirst(); if (first2.isPresent()) { System.out.println(first2.get()); // 2 } else { System.out.println("no value?"); } } }
Выход
1 2
1.2 Найдите первый элемент из потока строк, который не равен “узлу”.
package com.mkyong.java8; import java.util.Arrays; import java.util.List; import java.util.Optional; public class Java8FindFirstExample2 { public static void main(String[] args) { Listlist = Arrays.asList("node", "java", "python", "ruby"); Optional result = list.stream() .filter(x -> !x.equalsIgnoreCase("node")) .findFirst(); if (result.isPresent()) { System.out.println(result.get()); // java } else { System.out.println("no value?"); } } }
Выход
java
2. найдите Любой()
2.1 Найдите любой элемент из потока целых чисел. Если мы запустим приведенную ниже программу, в большинстве случаев результат будет равен 2, похоже, что find Any()
всегда возвращает первый элемент? Но, нет никакой гарантии для этого, find Any()
может возвращать любой элемент из потока.
package com.mkyong.java8; import java.util.Arrays; import java.util.List; import java.util.Optional; public class Java8FindAnyExample1 { public static void main(String[] args) { Listlist = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); Optional any = list.stream().filter(x -> x > 1).findAny(); if (any.isPresent()) { Integer result = any.get(); System.out.println(result); } } }
Выход
2 // no guaranteed
Рекомендации
- Примеры фильтров потоков Java 8
- Java 8 Поток JavaDoc
- Поток.findFirst() Явадок
- Поток.найдите любой() JavaDoc
Оригинал: “https://mkyong.com/java8/java-8-stream-findfirst-and-findany/”