可以流式传输地图'用于这样的处理?

时间:2015-09-15 18:37:17

标签: java dictionary java-8 java-stream

这可以通过Stream | Map完成,这样我就不需要将结果放在外部HashMap中,而是使用.collect(Collectors.toMap(...))收集结果; ?

Map<ReportType, Long> rep = new HashMap<>(); // result is here
Arrays.stream(rTypes).forEach(r -> rep.put(r.reportType, r.calcValue()));

r.calcValue()计算新结果的位置,然后放在地图中。

2 个答案:

答案 0 :(得分:6)

当然,您可以在这里使用Collectors#toMap()。假设rTypes包含Report个实例:

Map<ReportType, Long> rep = Arrays.stream(rTypes)
  .collect(Collectors.toMap(Report::getReportType, Report::calcValue));

(你有一个getReportType方法,对吧?:)

答案 1 :(得分:5)

是的,可以这样做,假设r.calcValue()返回Long

Map<ReportType, Long> rep = Arrays.stream(rTypes)
                      .collect(Collectors.toMap(r -> r.reportType, r -> r.calcValue()));