我有一个:
Map<String,List<String>> persons
String
中的每个List<String>
元素代表一个Long
所以我想将我的Map<String,List<String>>
变成Map<String,List<Long>>
问题是我的列表封装在地图中。我知道只有一个列表,我可以做到:
list.stream().map(s -> Long.valueOf(s)).collect(Collectors.toList());
但是我的情况有些不同。知道如何进行吗?
谢谢
答案 0 :(得分:4)
您可以使用此收藏:
list.stream().map(s -> Long.valueOf(s)).collect(Collectors.toList());
作为应用于地图流的valueMapper
的{{1}}参数。
愿意提供:
toMap()
答案 1 :(得分:3)
Map<String,List<String>> persons = ...
Map<String, List<Long>> result = new HashMap<>();
persons.forEach((key, value) -> {
result.put(key, value.stream().map(Long::valueOf).collect(Collectors.toList()));
});
答案 2 :(得分:1)
您可以这样做
Map<String, List<Long>> longMap = persons.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey,
e -> e.getValue().stream().map(s -> Long.valueOf(s)).collect(Collectors.toList())));