Java Stream.提取多个地图的不同值

dab*_*aba 5 java java-8 java-stream

我试图提取和计算地图值中不同元素的数量.问题在于它不仅仅是一张地图,而是其中许多地图,而且它们是从地图列表中获取的.

具体来说,我有一个TournamentList<Event> event成员的班级.一个eventMap<Localization, Set<Timeslot>> unavailableLocalizations会员.我想计算所有时间段值的区别.

到目前为止,我设法只计算一个地图中的区别:

event.getUnavailableLocalizations().values().stream().distinct().count()
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚的是如何为所有地图而不仅仅是一个地图.

我想我需要一些方法来获取每个事件的map的值并将所有这些放入流中,然后其余的就像我一样.

ass*_*ias 11

让我们一步一步来做:

listOfEvents.stream() //stream the events
            .map(Event::getUnavailableLocalizations) //for each event, get the map
            .map(Map::values) //get the values
            .flatMap(Collection::stream) //flatMap to merge all the values into one stream
            .distinct() //remove duplicates
            .count();   //count
Run Code Online (Sandbox Code Playgroud)