Сначала вы можете создать поиск Set
номеров арендаторов для ослабления в фильтре, пока выполняете итерацию по второму списку.
Set<Long> tenancies = startDateData.stream()
.map(TenancyHistory::getTenancyNumber)
.collect(Collectors.toSet());
Теперь сделанная вами попытка может быть исправлена как;
final Long newAccounts = endDateData.stream()
.map(TenancyHistory::getTenancyNumber)
.filter(num -> !tenancies.contains(num)) // here
.count();
Чтобы помочь вам понять сообщение об ошибке, с которым вы столкнулись, рассмотрите код
(end/start)DateData.stream().map(TenancyHistory::getTenancyNumber)
, это вернет Stream<Long>
, теперь то, что вы в итоге выполнили в своем filter
этап состоял в том, чтобы сравнить Stream<Long>
со значением Long
номера арендатора от другого Stream
как
startDateData.stream().map(TenancyHistory::getTenancyNumber)::equals
, и, следовательно, прочитанное сообщение об ошибке всегда оценивалось бы как false
. Так, что итоговое значение вашего всегда будет 0
.