过滤器可以非常方便的处理List中的数据关于筛选,搜索等场景。详见代码
1 import java.util.ArrayList; 2 import java.util.Arrays; 3 import java.util.List; 4 import java.util.stream.Collectors; 5 6 public class FilterJava { 7 private String name; 8 private int age; 9 10 public String getName() { 11 return name; 12 } 13 14 public void setName(String name) { 15 this.name = name; 16 } 17 18 public int getAge() { 19 return age; 20 } 21 22 public void setAge(int age) { 23 this.age = age; 24 } 25 26 public FilterJava(String name, int age){ 27 this.name=name; 28 this.age=age; 29 } 30 31 public static void main(String[] args) { 32 // FilterJava filterJava1 = new FilterJava("wq",18); 33 // FilterJava filterJava2 = new FilterJava("ws",20); 34 FilterJava[] filterJavas = {new FilterJava("wq",18),new FilterJava("wq",20)}; 35 List<FilterJava> ls = Arrays.asList(filterJavas); 36 37 38 39 //一个条件筛选 40 FilterJava result1 = ls.stream().filter(p->"wq".equals(p.getName())) 41 .findAny().orElse(null); 42 System.out.println(result1.getName()); 43 44 //多条件筛选,orElse中表示,若没有找到符合筛选条件的则返回这个对象 45 FilterJava result2 = ls.stream().filter(p->"wq1".equals(p.getName()) && 18==p.getAge()). 46 findAny().orElse(new FilterJava("doudi",200)); 47 48 System.out.println(result2.getName()); 49 50 //使用map收集 51 String name = ls.stream().filter(p->"wq".equals(p.getName())).map(FilterJava::getName) 52 .findAny().orElse(""); 53 54 System.out.println("=========="); 55 System.out.println(name); 56 57 List<String> names = ls.stream().filter(p->"wq".equals(p.getName())).map(FilterJava::getName) 58 .collect(Collectors.toList()); 59 names.forEach(System.out::println); 60 61 List ls2 = Arrays.asList(new String[]{"1", "2", "3"}); 62 63 64 for(Object l1 : ls2){ 65 System.out.println(l1); 66 } 67 68 //lambda表达式写法,等同于上面foreach 69 ls2.forEach(System.out::println); 70 71 } 72 }