Java Streams TakeUntil 100 Элементы отфильтрованы / собраны - PullRequest
0 голосов
/ 09 октября 2018

Я хочу использовать такие потоки, как:

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

, но остановите фильтрацию, как только у меня будет максимум 100 элементов, готовых для сбора.Как я могу добиться этого без фильтрации всего и вызова subList(100, result.size())?

1 Ответ

0 голосов
/ 09 октября 2018

Вы можете использовать limit после filter:

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

Это остановит поток после того, как 100 элементов будут найдены после фильтрации (limit - операция короткого замыкания в потоке).

...