java8 過濾器用法

過濾器能夠很是方便的處理List中的數據關於篩選,搜索等場景。詳見代碼java

 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 }
相關文章
相關標籤/搜索