Java streams从map of maps获取列表
我有以下变量声明
Map<EventType<? extends Event>, Map<EventSource, List<EventHandler<? super Event>>>> eventHandlers;
使用java streams,我想先在eventType上过滤这个映射,然后在eventSource上过滤,最后是一个列表
如何使用java streams实现这一点,我尝试了几种不同的方法,但都没有成功。到目前为止,我所执行的是
List <Object> something = eventHandlers.entrySet().stream().filter(entry
-> entry.getKey() == event.eventType || event.eventType.isSubType(entry.getKey())
).map(Map.Entry::getValue).collect(Collectors.toList());
但我只是以List<Map<EventSource, List<EventHandler<? super Event>>>>
结束
我如何做到这一点,任何帮助或指点将不胜感激
非常感谢
# 1 楼答案
扩展我的评论,类似这样的东西(没有编译器编写,因此可能有一些错误)应该可以工作:
请注意,可以使用lambdas而不是函数引用来缩短一点: