Java Stream 相当于 LINQ SelectMany()

Java 8 Stream 相当于 LINQ 的 SelectMany 吗

例如,在C#中,如果我有我想变成一个(字典中所有标签的平面可枚举),我会这样做。Dictionary<string, List<Tag>> tagsIEnumerable<Tag>tags.SelectMany(kvp => kvp.Value)

有没有一个 Java 等效的 a 可以产生一个 ?Map<String, List<Tag>>Stream<Tag>


答案 1

您希望对地图中包含的所有值进行平面映射:

Map<String, List<Tag>> map = new HashMap<>();
Stream<Tag> stream = map.values().stream().flatMap(List::stream);

此代码首先将映射的所有值检索为 with values(),使用 stream() 从此集合中创建一个 Stream,然后将每个值平面映射到具有方法引用的 。Collection<List<Tag>>List<Tag>StreamList::stream


答案 2