where操作,也可以称之为过滤filter操作,快速方便的过滤list中的bean对象,不用再写for循环了,代码如下:
一:直接代码实现
public interface Where {
boolean where(D obj) ;
}
/**
* 通过接口函数选择对象集合的属性值
* @param colls
* @param gb
* @return
* ,D>
*/
public static final List where(Collection colls ,Where gb){
Iterator iter = colls.iterator() ;
List set=new ArrayList();
while(iter.hasNext()) {
D d = iter.next() ;
if(gb.where(d)){
set.add(d);
}
}
return set;
}
二:Java8 stream提供了一个filter操作来实现过滤
filter: 对于Stream中包含的元素使用给定的过滤函数进行过滤操作,新生成的Stream只包含符合条件的元素;
List nums = Lists.newArrayList(1,1,8,null,2,3,4,null,5,6,7,9,10);
List numList = nums.stream().filter(num -> num != null)
.filter(num -> num > 5)
.collect(Collectors.toList());
System.out.println(numList);
总结: java8 stream流方式,使用简单方便,但是对于一些复杂条件的多重过滤,写起来还是不是很方便,如果直接用第一种方法自定义实现,则不存在这种问题。