where操作,也可以稱之為過(guò)濾filter操作荆烈,快速方便的過(guò)濾list中的bean對(duì)象拯勉,不用再寫for循環(huán)了竟趾,代碼如下:
一:直接代碼實(shí)現(xiàn)
public interface Where<D> {
boolean where(D obj) ;
}
/**
* 通過(guò)接口函數(shù)選擇對(duì)象集合的屬性值
* @param colls
* @param gb
* @return
* <T extends Comparable<T> ,D>
*/
public static final <D> List<D> where(Collection<D> colls ,Where<D> gb){
Iterator<D> iter = colls.iterator() ;
List<D> set=new ArrayList<D>();
while(iter.hasNext()) {
D d = iter.next() ;
if(gb.where(d)){
set.add(d);
}
}
return set;
}
二:Java8 stream提供了一個(gè)filter操作來(lái)實(shí)現(xiàn)過(guò)濾
filter: 對(duì)于Stream中包含的元素使用給定的過(guò)濾函數(shù)進(jìn)行過(guò)濾操作憔购,新生成的Stream只包含符合條件的元素;
List<Integer> nums = Lists.newArrayList(1,1,8,null,2,3,4,null,5,6,7,9,10);
List<Integer> numList = nums.stream().filter(num -> num != null)
.filter(num -> num > 5)
.collect(Collectors.toList());
System.out.println(numList);
總結(jié): java8 stream流方式岔帽,使用簡(jiǎn)單方便玫鸟,但是對(duì)于一些復(fù)雜條件的多重過(guò)濾,寫起來(lái)還是不是很方便犀勒,如果直接用第一種方法自定義實(shí)現(xiàn)屎飘,則不存在這種問(wèn)題。