Java 8流API:获取第一个找到的集合元素

Ole*_*lov -1 java java-stream

有一节课

public class Event {
    public boolean isActive() {
        //...
    }
    //...
}
Run Code Online (Sandbox Code Playgroud)

有一个TreeSet<Event> events持有数千个元素.我需要有效地找到任何活动Event并获得元素.

我想用a parallelStream来利用多线程.

是否可以像anyMatch()仅返回找到的元素一样进行操作?

boolean hasActiveEvent = events.parallelStream().anyMatch(event -> event.isActive());
Run Code Online (Sandbox Code Playgroud)

zap*_*apl 9

是的,使用过滤器和查找

Optional<Event> result = events
        .parallelStream()
        .filter(Event::isActive)
        .findAny();
Run Code Online (Sandbox Code Playgroud)