我有一个Map<String, List<Object>>
,我想在Java 8中将其转换为Map<String, List<String>>
。
在Java 1.7中,我使用一个函数从Map中提取值,然后编写了另一个方法声明为空List,该方法用于循环以提取每个元素,然后添加到Java 1.7中的List Object中。
在Java 8中使用lambda表达式做同样的建议
预先感谢
答案 0 :(得分:1)
您可以使用此:
Map<String, List<String>> result = map.entrySet().stream()
.map(e -> Map.entry(e.getKey(),
e.getValue().stream()
.map(o -> (String) o) //or Object::toString depending on the object
.collect(Collectors.toList())))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
Map.entry
来自Java 9,如果您使用的是Java 8,则可以使用AbstractMap.SimpleEntry
。