的流映射我有一個映射列出的,並想收集所有的值,然後流收集到的名單,所以給出: -的Java 8流 - 收集並列出
Map<LocalDateTime, List<PublicationSession>> effectiveDatePublicationMap;
下面的作品/說明了什麼我想重複做,但我想要做的這一切流,而不是創建使用迭代中間名單: -
List< PublicationSession> publicationsToFilter = new ArrayList<>();
for (List< PublicationSession> sessions : effectiveDatePublicationMap.values()) {
publicationsToFilter.addAll(sessions);
}
Collection<PublicationSession> wantedPublications = publicationsToFilter.stream()
.filter(pub -> PublicationStatus.valueOf(pub.getPublishStatus()) == PublicationStatus.COMPLETE)
.sorted(Comparator.comparing(PublicationSession::getCreateTime))
.collect(toMap(p -> p.getPublicationSession().getEffDateTime(), UnaryOperator.identity(), PICK_LATEST))
.values();
,所以我想流列表的地圖全部納入一個名單,然後在一個流中工作在這個子列表上,而不是必須在兩個語句中完成上述操作(即構建你的通過迭代列表,然後進行流式過濾/分類和收集。
我到目前爲止沒有這樣做,當我嘗試和流/收集地圖我得到編譯問題。任何人都可以展示如何一步完成上述操作,而無需迭代,然後流式傳輸?
你想「扁平化」地圖值在一個列表中。 [flatmap()](https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#flatMap-java.util.function.Function-)可能就是你尋找。 –