dab*_*aba 5 java java-8 java-stream
我试图提取和计算地图值中不同元素的数量.问题在于它不仅仅是一张地图,而是其中许多地图,而且它们是从地图列表中获取的.
具体来说,我有一个Tournament有List<Event> event成员的班级.一个event有Map<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)