gpt4 book ai didi

java - 使用 Streams API 根据字段值求和对象

转载 作者:行者123 更新时间:2023-12-01 07:58:41 25 4
gpt4 key购买 nike

我想知道是否可以使用新的 Streams API 在一行中执行以下操作:

List<MyItem> arr = new ArrayList<>();

// MyItem has a single field, which is a value
arr.add(new MyItem(3));
arr.add(new MyItem(5));

// the following operation is the one I want to do without iterating over the array
int sum = 0;
for(MyItem item : arr){
sum += item.getValue();
}

如果数组只包含 int,我可以这样做:

int sum = array.stream().mapToInt(Integer::intValue).sum();

但是,我可以将相同的想法应用于任意对象列表吗?

最佳答案

你仍然可以做到。只需更改映射方法即可:

int sum = arr.stream().mapToInt(MyItem::getValue).sum();

您甚至可以将整个代码片段缩减为一行:

int sum = Stream.<MyItem>Of(new MyItem(3),new MyItem(5)).mapToInt(MyItem::getValue).sum();

甚至更短(感谢@MarkoTopolnik 的评论):

int sum = Stream.Of(new MyItem(3),new MyItem(5)).mapToInt(MyItem::getValue).sum();

关于java - 使用 Streams API 根据字段值求和对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27105790/

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