Rob*_*ser 9 java linq functional-programming java-8 java-stream
什么是Java 8 Stream相当于LINQ的SelectMany?
例如,在C#中,如果我有Dictionary<string, List<Tag>> tags,我想变成一个IEnumerable<Tag>(字典中所有标签的可枚举),我会这样做tags.SelectMany(kvp => kvp.Value).
有一个Java等价物Map<String, List<Tag>>会产生一个Stream<Tag>吗?
Tun*_*aki 16
您正在查看flatMap地图中包含的所有值:
Map<String, List<Tag>> map = new HashMap<>();
Stream<Tag> stream = map.values().stream().flatMap(List::stream);
Run Code Online (Sandbox Code Playgroud)
此代码首先将地图的所有值检索为Collection<List<Tag>>with values(),使用此集合创建Stream stream(),然后使用方法引用将每个值平面映射List<Tag>到a .StreamList::stream