public class Main { public static void main(String[] args) { List<Person> persons = Arrays.asList( new Person("Alice", 25, true), new Person("Bob", 30, false), new Person("Charlie", 35, true), new Person("David", 40, true) ); int sum = persons.stream() .filter(Person::isConditionMet) .mapToInt(Person::getAge) .sum(); System.out.println("Sum of ages: " + sum); }当age字段为null会影响sum的结果吗
时间: 2024-02-14 11:25:14 浏览: 161
实例分析Java中public static void main(String args[])是什么意思
如果`age`字段为`null`,在调用`mapToInt(Person::getAge)`时会抛出`NullPointerException`。这是因为`mapToInt()`方法期望返回一个`IntStream`,但如果字段值为`null`,则无法进行映射操作。
为了避免这种情况,你可以在映射之前添加一个过滤条件来排除`age`字段为`null`的情况。例如,你可以修改代码如下:
```java
int sum = persons.stream()
.filter(person -> person.getAge() != null) // 过滤掉age字段为null的数据
.filter(Person::isConditionMet)
.mapToInt(Person::getAge)
.sum();
```
在这个示例中,我们添加了一个额外的过滤条件`person -> person.getAge() != null`,用于排除`age`字段为`null`的数据。这样就可以避免抛出`NullPointerException`错误,并正确计算符合条件的人的年龄总和。
请记住,在修改代码时,确保根据实际情况调整过滤条件和映射操作。
阅读全文