【发布时间】:2017-05-15 18:21:22
【问题描述】:
我正在尝试创建一个包含活动和该活动总持续时间的地图,因为我知道该活动以不同的持续时间出现更多次。
通常,我会这样解决它:
Map<String,Duration> result2 = new HashMap<String,Duration>();
for(MonitoredData m: lista)
{
if(result2.containsKey(m.getActivity())) result2.replace(m.getActivity(),result2.get(m.getActivity()).plus(m.getDuration()));
else result2.put(m.getActivity(), m.getDuration());
}
但我正在尝试使用流来执行此操作,但我不知道如何将总和放入其中。
Function<Duration, Duration> totalDuration = x -> x.plus(x);
Map<String, Duration> result2 = lista.stream().collect(
Collectors.groupingBy(MonitoredData::getActivity,
Collectors.groupingBy(totalDuration.apply(), Collectors.counting()))
);
我尝试了各种方式对它们进行分组,直接映射它们,或者直接在括号中求和,但我卡住了。
【问题讨论】:
标签: dictionary java-8 java-stream