执行过滤器 findFirst 时,我不断收到“java.util.NoSuchElementException: No value present”。我无法更改代码,因为它会破坏代码的其他部分,我们不想在过滤器中编写方法逻辑。代码给出如下。
--- 调用该方法时出现以下错误
错误 :
java.util.NoSuchElementException: No value present
at java.util.Optional.get(Optional.java:135)
错误是因为“.filter(x -> x > 5) .findFirst()”的值为 null
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 10, 3, 7, 5);
int a = list.stream()
// .peek(num -> System.out.println("will filter " + num))
.filter(x -> x== null)
.map( t -> {
System.out.println("hello");
return 0;
})
.filter(x -> x > 5)
.findFirst()
.get();
System.out.println(a);
此处 list.stream() 将提供将由 .filter(x -> x== null) 使用的流。现在在这种情况下 x 不为空,因此当涉及到 .filter(x -> x > 5) 时,它会给出空值,因为流不存在。因此例外。
为此,我需要一些替代方法的帮助。