gpt4 book ai didi

java - 在 Java 中创建一个映射中的值流,这些值是另一个映射中的值

转载 作者:搜寻专家 更新时间:2023-11-01 01:50:26 24 4
gpt4 key购买 nike

对问题的标题感到抱歉;我很难理解它。如果你们有更好的标题,请告诉我,我可以更改。

我有两种类型的对象,Bookmark 和 Revision。我有一张大 map ,像这样:

Map<Long, Bookmark> mapOfBookmarks;

它包含像这样的键值对:

1L: Bookmark1,
2L: Bookmark2,
...

每个书签都有一个返回 map 的“getRevisions()”方法

public Map<Long, Revision> getRevisions();

我想创建一个 Stream,其中包含 mapOfBookmarks 下存在的所有修订。本质上我想这样做:

List<Revision> revisions = new ArrayList<>();
for (Bookmark bookmark : mapOfBookmarks.values()) { // loop through each bookmark in the map of bookmarks ( Map<Long, Bookmark> )
for (Revision revision : bookmark.getRevisions().values()) { // loop through each revision in the map of revisions ( Map<Long, Revision> )
revisions.add(revision); // add each revision of each map to the revisions list
}
}
return revisions.stream(); // return a stream of revisions

但是,我想使用 Stream 的功能来做到这一点,所以更像是:

return mapOfBookmarks.values().stream().everythingElseThatIsNeeded();

这基本上就像在说:

return Stream.of(revision1, revision2, revision3, revision4, ...);

我该如何写出来?需要注意的是,它循环遍历的数据集可能很大,这使得列表方法成为一种糟糕的方法。

我正在使用 Windows 7 和 Java 8

最佳答案

A flatmap 就是你要找的。当流中包含要展平的流时,flatmap 就是答案,

List<Revision> all =
mapOfBookmarks.values().stream()
.flatMap(c -> c.getRevisions().values().stream())
.collect(Collectors.toList());

关于java - 在 Java 中创建一个映射中的值流,这些值是另一个映射中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35880287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com