java list.stream() .map(obj -> obj.getIsEven()).anyMatch(value -> Objects.equals(value,"1"))当value为空值时报空错怎么办
时间: 2024-09-13 15:06:39 浏览: 45
当你在 Java 中使用 `list.stream()` 链接操作 `.map(...).anyMatch(...)` 并尝试通过 `Objects.equals(value, "1")` 检查某个条件时,如果列表中的 `value` 为 null 或者 `getIsEven()` 方法返回的是 null,则会抛出 `NullPointerException`。这是因为你在调用 `equals` 方法前试图访问一个可能为 null 的值。
为了避免这个错误,你需要在调用 `Objects.equals` 之前添加一个检查,确保 `value` 不是 null。你可以这样做:
```java
Optional<Boolean> isEvenValue = list.stream()
.map(obj -> obj != null && obj.getIsEven() != null ? obj.getIsEven() : null)
.filter(Objects::nonNull) // 过滤掉 null 值
.anyMatch(value -> Objects.equals(value, "1"));
if (isEvenValue.isPresent()) {
boolean result = isEvenValue.get();
// 然后处理结果,比如:
if (result) {
System.out.println("至少有一个元素的值等于 '1'");
} else {
System.out.println("所有元素的值都不等于 '1'");
}
} else {
System.out.println("列表中没有元素满足条件");
}
```
在这个修改后的版本里,我们首先检查 `obj` 和 `getIsEven()` 是否都非 null,然后过滤掉 `null` 值,最后再进行条件判断。这样可以避免 `NullPointerException`。
阅读全文