【发布时间】:2017-03-21 20:18:38
【问题描述】:
我有一张地图Map<Id,Map<Obj1,Obj2>> existingMap and List<Obj1> list;
我需要将列表值添加到映射作为键和新映射作为值。
我试图做类似的事情:
existingMap.putAll(list.stream().map(x->x.getId()).collect(
Collectors.toMap(x, x -> Map<Obj1,Obj2>::new);
我应该怎么写?以及如何使用参数化构造函数来对抗默认值?
【问题讨论】:
-
地图是一个接口。您不能在界面上使用 new 。选择一个具体的 Map 实现(例如 HashMap)
-
也就是说,一个好的旧 for 循环在这里会更具可读性,IMO
-
如果列表包含的元素是地图中的现有键怎么办?你应该失败吗?破坏旧值?保留当前条目?
标签: java dictionary lambda java-8 hashmap