1 回答
TA贡献1856条经验 获得超17个赞
你试图做的事情是不可能的,即当你执行时,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()) ;
添加回答
举报