List.stream().filter() findAny
时间: 2024-08-16 19:00:29 浏览: 55
在Java 8及更高版本中,`List.stream()`是一个流(Stream)操作,用于创建从列表到流的转换。`filter()`方法则用于过滤掉流中的不符合特定条件的元素,返回一个新的流,只包含满足条件的元素。
`findFirst()`或`findAny()`方法是这两个过滤后的流操作,它们分别返回第一个匹配项(如果存在)作为Optional对象。`findFirst()`保证找到第一个元素就返回,如果没有符合条件的元素,则会抛出NoSuchElementException异常。而`findAny()`则总是返回一个Optional,无论流是否为空,它可能包含有值也可能没有值。
举个例子:
```java
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
Optional<String> firstMatchingName = names.stream()
.filter(name -> name.startsWith("B")) // 过滤以"B"开头的名称
.findFirst(); // 找到第一个匹配项
if (firstMatchingName.isPresent()) {
System.out.println("First matching name is: " + firstMatchingName.get());
} else {
System.out.println("No matching name found.");
}
```
在这里,如果列表中有名字以"B"开头,`findFirst()`将返回该名字;如果没有,程序将输出"No matching name found."。
阅读全文