【发布时间】:2018-09-08 20:15:59
【问题描述】:
我是 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
}
输出:: 地图
{
"userId":1,
"sum":90 // addition of all numbers associated with userId
}
我想使用 java 8 流 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;
}
【问题讨论】:
-
你不需要
addNumbers顺便说一句...这就是Long::sum已经做的事情 -
如果我想对数字数据执行更复杂的操作,那么最好有该操作的单独方法(该方法最终返回数字)。我如何从 collectors.toMap 调用该方法?任何建议?
-
作为任何其他方法参考...
this::addNumbers而不是我使用过的Long::sum
标签: java java-8 java-stream collectors