Guava collect 包里面提供了一个类可以过滤集合, Collections2的filter方法。具体的过滤集合实现步骤看下面代码;(注意必须导入Guava这个jar包)
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add(null);
list.add("d");
Collection<String> c2 = Collections2.filter(list, e->e!=null);
List<String> list2 = new ArrayList<>(c2);
System.out.println(list2);
Collection<String> c3 = Collections2.filter(list, e->e!="a");
System.out.println(c3);
Predicate<String> p1 = (e)->e!="d";
Collection<String> c4 = Collections2.filter(list, p1);
System.out.println(c4);
}
}
输出结果:
[a, b, c, d]
[b, c, null, d]
[a, b, c, null]
当然如果你想过滤 Map Guava也提供了 Maps.filterKeys 方法来做这件事
public class Test {
public static void main(String[] a){
Map<String, String> map = new HashMap<>();
map.put("a", "A");
map.put("b", "B");
map.put("c", "C");
map = Maps.filterKeys(map, (e)->e!="a");
System.out.println(map);
}
}
输出结果:
{b=B, c=C}