第二个列表中非';在java中,t位于第一个列表中
假设我的第一个列表是:第二个列表中非';在java中,t位于第一个列表中,java,collections,java-8,java-stream,Java,Collections,Java 8,Java Stream,假设我的第一个列表是: [{租户编号:777,编号:1},{租户编号:888,编号:2},{租户编号:999,编号:3}] 我的第二个清单是 [{租户编号:444,编号:4},{租户编号:999,编号:5},{租户编号:666,编号:6}] 因此,如果我们在两个列表中按名称进行比较,第二个列表中有两个对象不在第一个列表中。如何在Java中找到这一点 这就是我所尝试的: final Long newAccounts=endDateData.stream() .map(TenancyHistory:
[{租户编号:777,编号:1},{租户编号:888,编号:2},{租户编号:999,编号:3}]
我的第二个清单是
[{租户编号:444,编号:4},{租户编号:999,编号:5},{租户编号:666,编号:6}]
因此,如果我们在两个列表中按名称进行比较,第二个列表中有两个对象不在第一个列表中。如何在Java中找到这一点
这就是我所尝试的:
final Long newAccounts=endDateData.stream()
.map(TenancyHistory::getTenancyNumber)
.filter(startDateData.stream().map(TenancyHistory::getTenancyNumber)::等于)
.count();
这是一个错误
[PredicateIncompatibleType]谓词的计算结果始终为false
因为Stream和Long类型不兼容
您可以首先创建租赁编号的查找
集
,以便在迭代第二个列表时在过滤器中进行简化
Set<Long> tenancies = startDateData.stream()
.map(TenancyHistory::getTenancyNumber)
.collect(Collectors.toSet());
<> >为了帮助您理解您所面临的错误消息,请考虑代码
(end/start)DateData.stream().map(TenancyHistory::getTenancyNumber)
这将返回一个流
,现在您在过滤器
阶段执行的是将流
与另一个流
的长
租约号值进行比较,如下所示:
startDateData.stream().map(TenancyHistory::getTenancyNumber)::equals
因此,读取此错误消息的计算结果将始终为false
。这样,您的结果值将始终为0
startDateData.stream().map(TenancyHistory::getTenancyNumber)::equals