【发布时间】:2016-03-08 23:44:35
【问题描述】:
抱歉问题的标题;我很难理解它。如果你们有更好的标题,请告诉我,我可以更改它。
我有两种类型的对象,书签和修订。我有一张大地图,如下所示:
Map<Long, Bookmark> mapOfBookmarks;
它包含键:值对,如下所示:
1L: Bookmark1,
2L: Bookmark2,
...
每个书签都有一个返回地图的“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, ...);
我该如何写出来?需要注意的是,它所循环的数据集可能很大,这使得 list 方法不太好。
我使用的是 Windows 7 和 Java 8
【问题讨论】:
标签: java java-8 java-stream