java8 过滤器用法

过滤器可以非常方便的处理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 }
原文地址:https://www.cnblogs.com/zhoufankui/p/12214336.html