Как и все, я все еще изучаю тонкости (и люблю их) нового Java 8 Streams API. У меня вопрос об использовании потоков. Я приведу упрощенный пример.
Java-потоки позволяют нам использовать Collection
и использовать метод stream()
для получения потока всех его элементов. В нем есть ряд полезных методов, таких как filter()
, map()
и forEach()
, которые позволяют нам использовать лямбда-операции над содержимым.
У меня есть код, который выглядит примерно так (упрощенный):
set.stream().filter(item -> item.qualify())
.map(item -> (Qualifier)item).forEach(item -> item.operate());
set.removeIf(item -> item.qualify());
Идея состоит в том, чтобы получить отображение всех элементов в наборе, которые соответствуют определенному определителю, а затем работать через них. После операции они не служат никакой дополнительной цели и должны быть удалены из исходного набора. Код работает хорошо, но я не могу поколебать ощущение, что в Stream
есть операция, которая могла бы сделать это для меня в одной строке.
Если это в Javadocs, я могу игнорировать его.
Кто-нибудь, более знакомый с API, видит что-то подобное?