Если у вас действительно выбрасывается исключение NullPointerException в представленном коде, значит метод GetUsers() возвращает коллекцию, в которой допускаются null-овые элементы, что само по себе указывает на плохой дизайн.
Разумеется, можно добавить проверку и отфильтровать null значения в стриме, но проблема, повторюсь, в том, что используется метод GetUsers(), возвращающий полную коллекцию, которая затем фильтруется:
public User GetUserById(int id) {
return GetUsers().stream()
.filter(Objects::nonNull)
.filter(x -> x.id == id)
.findFirst()
.get();
}
Более стандартное решение состоит в применении репозитория, у которого есть отдельные методы для получения полной коллекции findAll и для получения одного элемента по идентификатору findById (в Spring JPA есть также метод findOne), тогда код выглядел бы так:
@Autowired
private UserRepository userRepo;
public List<User> getUsers() {
return userRepo.findAll();
}
public User getUserById(int id) {
return userRepo.findById(id);
}