从地图中获取值列表

时间:2019-07-17 12:39:52

标签: java-8 java-stream

我有一个键为StringList<String>为值的地图。我想使用Java 8从该映射中的所有键中获取所有值的列表。我的方法为我提供了一个值列表。我错误地将所有值映射到“列表”,并且列表的基础元素被转换为单个对象。我希望所有这些都是列表的各个元素。

Map<String,List<String>> map = new ConcurrentHashMap<>();
List<String> myList = map.values().stream().map(List::toString).collect(Collectors.toList());

2 个答案:

答案 0 :(得分:1)

或使用:

map.values().forEach(myList::addAll);

答案 1 :(得分:0)

使用flatMap获取Stream的所有String值的所有List<String>的{​​{1}}:

Map

请注意,List<String> myList = map.values() .stream() .flatMap(List::stream) .collect(Collectors.toList()); 可能包含重复项。如果您希望避免这种情况,请在List之后添加distinct()