Вы можете использовать removeAll
для получения бесплатного списка.
List<User> userBelowThreshold = new ArrayList<>(users); // initiated with 'users'
userBelowThreshold.removeAll(userAboveThreshold);
Примечание : для этого потребуетсяПереопределена реализация equals
и hashCode
для User
.
С другой стороны, если вы хотите продолжить итерациюполный users
список всего один раз , вы можете использовать Collectors.partitioningBy
как:
Map<Boolean, List<User>> userAgeMap = users.stream()
.collect(Collectors.partitioningBy(user -> user.getAge() > 21, Collectors.toList()));
List<User> userAboveThreshold = userAgeMap.get(Boolean.TRUE);
List<User> userBelowThreshold = userAgeMap.get(Boolean.FALSE);