首页 > 解决方案 > Java Streams TakeUntil 100 个元素过滤/收集

问题描述

我想使用如下流:

List<String> result = myArr
    .stream()
    .filter(line -> !"foo".equals(line))
    .collect(Collectors.toList());

但是一旦我准备好收集最多 100 个元素,就立即停止过滤。我怎样才能在不过滤所有和调用的情况下实现这一点subList(100, result.size())

标签: javafunctional-programmingstreamjava-stream

解决方案


您可以limit 在之后 filter使用:

List<String> result = myArr
    .stream()
    .filter(line -> !"foo".equals(line))
    .limit(100) 
    .collect(Collectors.toList());

这将在过滤后找到 100 个项目后停止流(limit是短路流操作)。


推荐阅读