在Java 8 Stream中, findFirst()
返回Stream中的第一个元素,而findAny()
返回Stream中的任何元素。
1. findFirst()
1.1从整数流中找到第一个元素。
package .java8;
import ;
import ;
import ;
public class Java8FindFirstExample1 {
public static void main(String[] args) {
List<Integer> list = (1, 2, 3, 2, 1);
Optional<Integer> first = ().findFirst();
if (()) {
Integer result = ();
(result); // 1
} else {
("no value?");
}
Optional<Integer> first2 = list
.stream()
.filter(x -> x > 1).findFirst();
if (()) {
(()); // 2
} else {
("no value?");
}
}
}
输出量
1
2
1.2从不等于“节点”的字符串流中找到第一个元素。
package .java8;
import ;
import ;
import ;
public class Java8FindFirstExample2 {
public static void main(String[] args) {
List<String> list = ("node", "java", "python", "ruby");
Optional<String> result = ()
.filter(x -> !("node"))
.findFirst();
if (()) {
(()); // java
} else {
("no value?");
}
}
}
输出量
java
2. findAny()
2.1从整数流中查找任何元素。 如果我们运行下面的程序,大多数情况下,结果是2,看起来findAny()
总是返回第一个元素? 但是,对此无法保证 , findAny()
可以从Stream返回任何元素。
package .java8;
import ;
import ;
import ;
public class Java8FindAnyExample1 {
public static void main(String[] args) {
List<Integer> list = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Optional<Integer> any = ().filter(x -> x > 1).findAny();
if (()) {
Integer result = ();
(result);
}
}
}
输出量
2 // no guaranteed
参考文献
- Java 8 Streams过滤器示例
- Java 8流JavaDoc
- ()JavaDoc
- ()JavaDoc
标签: 过滤 Java 8 流
翻译自: /java8/java-8-stream-findfirst-and-findany/