То, что вы пытаетесь сделать, просто невозможно, т. Е. Когда вы выполняете map(Record::getName)
, у вас есть Stream<String>
, где все строки являются именами записей, а любые вызовы метода после этого основаны только на именах записей.
вместо этого просто используйте один filter
:
boolean check = masterList.stream()
.filter(s -> s.getName().equals(record.getName()) &&
s.getPart().equals(record.getPart()))
.findFirst().isPresent();
или лучше использовать anyMatch
boolean check = masterList.stream()
.anyMatch(s -> s.getName().equals(record.getName()) &&
s.getPart().equals(record.getPart()));
Изменить:
если это может быть одно совпадающее имя записи и другая совпадающая часть записи?
Затем вы можете собрать все имена и части записей в набор следующим образом:
Set<String> container = masterList.stream()
.flatMap(r -> Stream.of(r.getName(), r.getPart()))
.collect(toSet());
Затем выполните:
boolean result = container.contains(record.getName()) &&
container.contains(record.getPart()) ;