Вы можете использовать комбинацию фильтра и flatMap.
- Отфильтруйте пустые поля и поля без полей
- Получите список всех элементов для всех полей, используя
flatMap
- Отфильтровать все нулевые элементы
Код выглядит следующим образом:
List<Item> presentItems = boxes.stream()
.filter(b -> b != null && b.getItems() != null)
.flatMap(Box::getItems)
.filter(i -> i != null)
.collect(Collectors.toList());
В другой заметке я бы посоветовал вам не сохранять нулевые записи в ваших списках, если вы можетеизбегайте этого, это сделает вашу жизнь намного проще.