使用java8和流API。
只有一个MyObject,我想转换
Map<Long, MyObject>
到
Map<Long, List<MyObject>>
列表中有一个元素?
答案 0 :(得分:4)
Map<Long, List<MyObject>> newMap = oldMap.entrySet().stream()
.collect(Collectors.toMap(
Entry::getKey,
e -> new ArrayList<>(Arrays.asList(e.getValue()))));
如果值中的不可变列表没问题,最后一行可能会简化一点:
e -> Collections.nCopies(1, e.getValue())));
答案 1 :(得分:1)
Map<Long, MyObject> yourMap = whateverYouImplementedHere;
Map<Long, List<MyObject>> listMap = new HashMap<>();
for (Entry<Long, MyObject> entry : yourMap.entrySet()){
listMap.put(entry.getKey(), new ArrayList<MyObject>(Arrays.asList(entry.getValue()));
}
答案 2 :(得分:1)
您可以获取条目集流并使用toMap
收集器与Collections.singletonList
(创建不可变列表)结合使用,从原始地图创建新值。
Map<Long, List<MyObject>> transformedMap =
map.entrySet()
.stream()
.collect(toMap(Map.Entry::getKey,
e -> Collections.singletonList(e.getValue())));