已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
2小时前关门。
Improve this question
说我有:
public class Car{
private String model;
private Integer price;
...
}
public class CarsList {
private List<Car> cars;
public List<Car> filterFunction(Integer maxPrice, Integer minPrice) {
return cars
.stream()
.filter(c -> c.getPrice() > minPrice)
.filter(c -> c.getPrice() < maxPrice)
.collect(Collectors.toList());
}
}
但是,我有一种可能性,参数maxPrice或minPrice或两者都为空。
是否有方法仅在函数参数不为空时使用maxPrice和minPrice过滤器?
我知道我可以在过滤之前检查参数是否不为空,但是我必须为每个组合配置不同的过滤(如果我有5个参数会发生什么)。
我在想:stream.filter(minPrice != null || c -> c.getPrice() > minPrice)
,但我可以看到为什么这不起作用。
3条答案
按热度按时间lh80um4z1#
当minPrice为空时,您可以返回true以跳过此过滤器。
.filter(c -> minPrice==null || c.getPrice() > minPrice)
carvr3hs2#
您只能根据参数有条件地使用筛选:
41ik7eoe3#
我假设函数中的参数都是整数,我会将其改为
然后检查是否有空值:
之后,我知道函数中的所有参数都不是空的。
如果您希望参数按顺序排列,我将执行类似于上面的操作:
然后道:
基于上一条注解: