标签: java linq functional-programming java-8 java-stream
LINQ Java 8 Stream的SelectMany等价物是什么?
例如,在C#中,如果我有Dictionary<string, List<Tag>> tags我要转换为IEnumerable<Tag>(字典中所有标记的可枚举),我会tags.SelectMany(kvp => kvp.Value)
Dictionary<string, List<Tag>> tags
IEnumerable<Tag>
tags.SelectMany(kvp => kvp.Value)
是否有Map<String, List<Tag>>的Java等效项会产生Stream<Tag>?
Map<String, List<Tag>>
Stream<Tag>
答案 0 :(得分:13)
您正在寻找flatMap地图中包含的所有值:
flatMap
Map<String, List<Tag>> map = new HashMap<>(); Stream<Tag> stream = map.values().stream().flatMap(List::stream);
此代码首先使用values()检索地图的所有值为Collection<List<Tag>>,然后使用stream()从此集合中创建一个Stream,然后展平每个List<Tag>的平面地图使用方法引用Stream进入List::stream。
values()
Collection<List<Tag>>
stream()
List<Tag>
Stream
List::stream