Недавно я написал класс, который выглядел примерно так:
public class Requirement { ... public Requirement(...) { ... } public When getWhen() { ... } public Event getEvent() {... } public SystemReaction getSystemReaction() {... } }
У меня был список экземпляров Requirement
. Теперь мне нужен был набор экземпляров Event
, на которые ссылался хотя бы один Требование
. Экземпляр Event
также может быть null
.
В Java до Java 8 я бы сделал следующее: a) Создайте пустой Хэш-набор
b) Выполните итерацию по списку Требований
экземпляров c) Для каждого экземпляра Requirement
проверьте, возвращает ли getEvent()
значение null
d) Если он не возвращает null
, добавьте событие в HashSet
Начиная с Java 8, вы можете использовать потоки для выполнения этой задачи в однострочном:
Setevents = requirements.stream().map(req -> req.getEvent()) .filter(event -> event != null).collect(Collectors.toSet());
Чтобы узнать больше о потоках, ознакомьтесь с этим руководством .
Оригинал: “https://dev.to/bertilmuth/the-joy-of-streams-2p0o”