java steam filter 先匹配A,没有则匹配B
时间: 2023-07-11 15:39:17 浏览: 122
可以使用Java 8中的Stream流和filter操作符来实现先匹配A,如果没有匹配成功,则匹配B的操作。具体代码如下:
```
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
Optional<String> result = list.stream() // 将List转为Stream
.filter(s -> s.equals("A")) // 匹配A
.findFirst(); // 返回第一个匹配成功的元素,如果没有则返回一个空的Optional对象
if (!result.isPresent()) { // 如果没有匹配成功
result = list.stream() // 再次将List转为Stream
.filter(s -> s.equals("B")) // 匹配B
.findFirst(); // 返回第一个匹配成功的元素,如果没有则返回一个空的Optional对象
}
if (result.isPresent()) { // 如果存在匹配成功的元素
System.out.println("匹配成功:" + result.get());
} else { // 如果不存在匹配成功的元素
System.out.println("匹配失败");
}
```
这段代码首先使用Stream流和filter操作符进行匹配A,如果匹配成功则返回一个Optional对象;如果匹配不成功,则再次使用Stream流和filter操作符进行匹配B,如果匹配成功则返回一个Optional对象。最后判断Optional对象是否存在匹配成功的元素,如果存在则输出匹配成功的元素,否则输出匹配失败的信息。
阅读全文