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());
喜欢代码复用性高的童鞋们可以使用