Хотя вам не стоит сталкиваться с NullPointerException
с вашим текущим кодом, все еще есть возможность получить NoSuchElementException
для выполнения get
на Optional
без подтверждения присутствия.
Вы должны использовать orElse
на несколько этапов вперед, так как я понимаю проблему так, что вы map
первый найденный элемент и транслируете только его элемент, если он доступен:
protection.getProtectionSet().stream() //List<ProtectionSet>
.filter(Objects::nonNull)
.findFirst() // first 'ProtectionSet'
.map(p -> p.getResourceIds()) // Optional<List<UUID>> from that
.orElse(Collections.emptyList()) // here if no such element is found
.stream()
.map(UUID::toString) // map in later stages
.collect(Collectors.toList()) // collect to List<String>