1 回答

TA貢獻1856條經(jīng)驗 獲得超17個贊
你試圖做的事情是不可能的,即當你執(zhí)行時,map(Record::getName)你有一個Stream<String>所有字符串都是記錄名稱的地方,之后的任何鏈接方法調(diào)用都僅基于記錄名稱。
而是只使用一個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()) ;
添加回答
舉報