Java 8流转换和列表

时间:2018-10-30 16:51:12

标签: java-8 java-stream

我有一个:

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());

但是我的情况有些不同。知道如何进行吗?

谢谢

3 个答案:

答案 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())));