这可以通过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()
计算新结果的位置,然后放在地图中。
答案 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()));