gpt4 book ai didi

java - mapToLong 不起作用后过滤非空

转载 作者:行者123 更新时间:2023-12-02 13:05:43 24 4
gpt4 key购买 nike

我的代码是这样的

class A {
private Long b;

public Long getB() {
return b;
}

public void setB(Long b) {
this.b = b;
}

public static void main(String[] args) {
A a1 = new A();
List<A> list = new ArrayList<>();
list.add(a1);
list.stream().mapToLong(A::getB).filter(Objects::nonNull).sum();
}
}

我想过滤null,但是不行,给我一个NullPointerException。
如果我在mapToLong之前过滤,就像

list.stream().filter(a -> a.getB()!=null).mapToLong(A::getB).sum();

效果很好。我想知道为什么。

最佳答案

mapToLongLong 转换为 long - 如果它是 null 你确实会得到一个异常。

您需要在转换之前过滤null:

list.stream()
.map(A::getB)
.filter(Objects::nonNull) //filter the nulls first
.mapToLong(Long::longValue) //then convert to primitive
.sum();

关于java - mapToLong 不起作用后过滤非空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53745927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com