Java过滤器如何保持空值



代码:

Stream<DbPacket> dbPackets = getDataContext(false, isTrue).getPackets().values()
.stream();
dbPackets = dbPackets.filter(
dbPacket -> "A".equals(dbPacket.getTariff().getCode()));

并非每个数据包都可以有资费,例如:

数据包1具有资费,代码A

数据包2具有资费,代码B

数据包3没有资费,也没有代码

因此,在某些情况下,dbPacket.getTariff().getCode()可以为空。我需要编辑我的代码,如果Packet没有Tariff,并且dbPacket.getTariff().getCode()为空,那么过滤器将保留这个Packet。在这种情况下,系统必须返回分组1(因为代码是A(和分组3(因为分组没有资费和代码(。如何修改我的代码?

是什么阻止了你这么做?

dbPackets = dbPackets.filter(
dbPacket -> dbPacket.getTariff() == null || "A".equals(dbPacket.getTariff().getCode() || dbPacket.getTariff().getCode() == null );

最新更新