Stream管道流的filter方法进阶

filter过滤一个集合中的年龄大于70并且是男性的具体代码实现如下

List<Object> object = new ArrayList();

List<Object> objectList = object.stream.filter(o->o.getAge>70 && o.getGender.equlas("M)).collect(Collectors.toList());

这样就可以把年龄大于70并且是男性过滤出来但是如果多次业务逻辑需要这个业务条件的话,就可以把条件定义在实体类中进行复用

例如:

在实体类中定义 Predicate 谓语类

public static Predicate <Object> ageThan70 = x->x.getAge>70;

public static Predicate <Object> genderM = x->x.getGender.equals("M");

这样在实体类中定义出来就可以进行逻辑复用,这样抽出来写更加提高了代码的复用性

具体实现为下面:

List<Object> objectList = object.stream.filter(Object.ageThan70  and genderM ).collect(Collectors.toList());

当然也可以写成或就跟sql类型  用or连接不用and连接

List<Object> objectList = object.stream.filter(Object.ageThan70  or genderM ).collect(Collectors.toList());

喜欢代码复用性高的童鞋们可以使用

上一篇:排序数组中只出现一次的数字(剑指offer-70)


下一篇:centos7安装Tomcat8.5.70