我有一个键为String
和List<String>
为值的地图。我想使用Java 8从该映射中的所有键中获取所有值的列表。我的方法为我提供了一个值列表。我错误地将所有值映射到“列表”,并且列表的基础元素被转换为单个对象。我希望所有这些都是列表的各个元素。
Map<String,List<String>> map = new ConcurrentHashMap<>();
List<String> myList = map.values().stream().map(List::toString).collect(Collectors.toList());
答案 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()
。