小编Oan*_*aV.的帖子

如何从流中映射java中的Duration字段的总和?

我正在尝试创建一个包含活动和该活动总持续时间的地图,因为该活动在不同持续时间下会出现更多次。

通常,我会这样解决:

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());
     }
Run Code Online (Sandbox Code Playgroud)

但是我试图通过流来做到这一点,但是我不知道如何将总和放入其中。

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()))
                );
Run Code Online (Sandbox Code Playgroud)

我尝试了各种方式将它们分组,直接映射或直接将它们汇总在方括号中,但我陷入了困境。

dictionary java-8 java-stream

5
推荐指数
1
解决办法
643
查看次数

标签 统计

dictionary ×1

java-8 ×1

java-stream ×1