【发布时间】:2018-08-30 21:12:42
【问题描述】:
您好,我有一段代码可以将一种窗口对象的列表转换为另一种类型的窗口对象,并将其填充到地图中,由 id 键入。可能有许多具有相同 id 但具有不同名称和属性的对象实例。我正在做的是获取一个列表 [W1(1,2,3), W1(2,3,4), W2(1,3,4)...] 并将其转换为 映射 [ 键 W1 ,值 (1,2,3), (2,3,4) 键 W2, .... ]
这里是代码 sn-p...
List<LinWin> list = winDao.get.....
Map<Long, List<MacWin>> res = new HashMap<>();
for (LinWin mw : list) {
List<MacWin> l2 = res.get(mw.getId());
if (l2 == null) {
l2 = new ArrayList<>();
res.put(mw.getId(), l2);
}
l2.add(new MacWin(mw.getName(), mw.getVendor(), mw.isFixed()));
}
返回资源
我想知道是否可以使用流和 lambdas 来折叠它。
list.stream().collect(Collectors.toMap(.....
【问题讨论】:
-
除非你想并行化这个,你应该考虑不使用流。映射可以用一个非常紧凑的循环来表示。这可能会提高可读性。
标签: java lambda java-stream collectors