我有一个List<Map.Entry<Long, String>>
。
如何将其转换为Map
?
目前,我正在执行以下操作,但似乎有些冗长(最重要的是,它不是“流利的”,即单个表达式,但需要一个代码块)。
Map<Long, String> result = new HashMap<>();
entries.forEach(e -> result.put(e.getKey(), e.getValue()));
return result;
Java 10很好。
答案 0 :(得分:2)
如果您确定没有重复的密钥,那就足够了:
Map<Long, String> result = entries.stream().collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue));
如果可能有重复项,则必须添加合并功能来处理它们。
答案 1 :(得分:2)
将其平铺:
Map<Long, String> result =
entries.stream()
.collect(toMap(e -> e.getKey(), e -> e.getValue(), (a, b) -> b);
(a, b) -> b
表示将采用重复键的最后一个值,该值与您当前方法的语义相匹配。