Filtering avoiding unexpected null using lambda's inline

前端 未结 2 731
眼角桃花
眼角桃花 2021-02-12 21:39

I have list for each element I would like to do this (using Java 8):

disabledUsersOnLDAP.stream().forEach(user -> usersRepository
                .findEnabledB         


        
2条回答
  •  深忆病人
    2021-02-12 21:59

    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));
    

提交回复
热议问题