gpt4 book ai didi

java - 从java中的stream api调用方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:57:52 26 4
gpt4 key购买 nike

我是 Java 8 的新手。我正在尝试以下场景。

class Numbers{
private Long userId;
private Long number1;
private Long number2;

}

List<Numbers> list = new ArrayList();

Input == {
"userId":1,
"number1":10,
"number2":20
}
{
"userId":1,
"number1":20,
"number2":40
}

输出:: map

{
"userId":1,
"sum":90 // addition of all numbers associated with userId
}

我想使用 java 8 stream api。

我正在尝试这样,但它给了我错误,

  Map<Long, Long> hashMap  =results.stream().collect(Collectors.toMap(Numbers::userId,Collectors.summingLong(?));

所以我的问题是我可以从 Collectors.toMap()

调用下面的方法吗
Long addNumbers(Long number1,Long number2){
return number1+number2;
}

最佳答案

Collectors::groupingBy 和下游收集器有一种更简单的方法:

results.stream().collect(
Collectors.groupingBy(
Numbers::getUserId, Collectors.summingLong(x -> x.getNumber1() + x.getNumber2())
)
);

您仍然可以使用 Collectors.toMap 来完成:

results.stream().collect(
Collectors.toMap(
Numbers::getUserId,
x -> x.getNumber1() + x.getNumber2(),
Long::sum
)
);

或者没有流:

Map<Long, Long> all = new HashMap<>();
numbers.forEach(x -> all.merge(
x.getUserId(),
x.getNumber1() + x.getNumber2(),
Long::sum);

关于java - 从java中的stream api调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52239065/

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