Filtering avoiding unexpected null using lambda's inline
java, java-8, lambda, nullable, nullpointerexception
Solution
You could do a mapping + filtering before running the `forEach` part, which also makes it a bit more readable:
disabledUsersOnLDAP.stream()
.map(user -> usersRepository.findEnabledByUsername(user.getUserName()))
.filter(userEntity -> userEntity != null)
.forEach(userEntity -> userEntity.setEnabled(false));
Or as an alternative:
disabledUsersOnLDAP.stream()
.map(User::getUsername)
.map(usersRepository::findEnabledByUsername)
.filter(Objects::nonNull)
.forEach(userEntity -> userEntity.setEnabled(false));
Problem
I have list for each element I would like to do this (using Java 8): ``` disabledUsersOnLDAP.stream().forEach(user -> usersRepository .findEnabledByUsername(user.getUserName()).setEnabled(false)); ``` How ever `usersRepository.findEnabledByUsername` might return `null`. Of course I can do this instead: ``` disabledUsersOnLDAP.stream().forEach(user -> { UserEntity userEntity = usersRepository.findEnabledByUsername(user.getUserName()); { if (userEntity != null) { userEntity.setEnabled(false); } } }); ``` But I wonder if I could do the `null` check inline (in the first option)?