【发布时间】:2019-11-25 16:04:51
【问题描述】:
我有 3 个过滤器,但它们并不总是充满值!
例如:
a=1, b=2, c=null
我有这个用于过滤:
myList.stream()
.filter(item->item.a == a)
.filter(item->item.b == b)
.filter(item->item.c == c)
.Collect(collection.asList);
但这对我不起作用。如果我对c 的输入是null,我需要忽略c 参数及其过滤器,如下所示:
myList.stream()
.filter(item->item.a == a)
.filter(item->item.b == b)
.Collect(collection.asList);
每当其他过滤器为null 时,都应将其从过滤器链中删除,如上例中的c。
【问题讨论】:
-
item.c和输入c声明的数据类型是什么? -
因此更改谓词的实现,以便在 c 为 null 时始终返回 true。并且,当您提出问题时,请发布真实代码。不是伪代码。
-
那么
.filter(item -> item.c == null || item.c == c)? -
提前感谢@ernest_k。这是字符串
-
谢谢@Holger,我认为这与我的问题相反,问题是空输入!不是对象的 null 属性
标签: java filter java-8 java-stream