Java8InAction_Chapter01

  1 import java.util.ArrayList;
  2 import java.util.Arrays;
  3 import java.util.List;
  4 import java.util.function.Predicate;
  5 import java.util.stream.Collectors;
  6 
  7 /**
  8  * 在这里编写类的功能描述
  9  *
 10  * @author shangjinyu
 11  * @created 2017/9/29
 12  */
 13 public class Notes {
 14 
 15     //构造一个待筛选的list
 16     List<Apple> inventory = Arrays.asList(new Apple(80, "green"),
 17             new Apple(155, "green"),
 18             new Apple(120, "red"));
 19 
 20     //找出list中的所有的绿色苹果
 21     //写法一
 22     public List<Apple> filterGreenApples(List<Apple> inventory) {
 23         List<Apple> result = new ArrayList<>();
 24         for (Apple apple : inventory) {
 25             if (apple.getColor().equals("green")) {
 26                 result.add(apple);
 27             }
 28         }
 29         return result;
 30     }
 31 
 32     List<Apple> greenApples1 = filterGreenApples(inventory);
 33 
 34     /*
 35     public interface Predicate<T>{
 36         boolean test(T t);
 37     }
 38     一个java8中的函数FunctionInterface接口
 39     */
 40     
 41     //写法二
 42 
 43     public List<Apple> filterGreenApples(List<Apple> inventory, Predicate<Apple> p) {
 44         List<Apple> result = new ArrayList<>();
 45         for (Apple apple : inventory) {
 46             if (p.test(apple)) {
 47                 result.add(apple);
 48             }
 49         }
 50         return result;
 51     }
 52 
 53     //用法
 54     List<Apple> greenApples2 = filterGreenApples(inventory, new Predicate<Apple>() {
 55         @Override
 56         public boolean test(Apple apple) {
 57             return apple.getColor().equals("green");
 58         }
 59     });
 60     
 61     
 62     public boolean isGreenApple(Apple apple) {
 63         return apple.getColor().equals("green");
 64     }
 65     
 66     //lambdasin写法
 67     List<Apple> greenApples3 = filterGreenApples(inventory, this::isGreenApple);
 68     List<Apple> greenApples4 = filterGreenApples(inventory, (Apple apple) -> apple.getColor().equals("green"));
 69     List<Apple> greenApples5 = filterGreenApples(inventory, item -> item.getColor().equals("green"));
 70     // 71     //顺序处理
 72     List<Apple> greenApples6 = inventory.stream().filter(apple -> apple.getColor().equals("green")).collect(Collectors.toList());
 73     //并行处理
 74     List<Apple> greenApples7 = inventory.parallelStream().filter(apple -> apple.getColor().equals("green")).collect(Collectors.toList());
 75 
 76     //一个实体类
 77     public class Apple {
 78         private int weight = 0;
 79         private String color = "";
 80 
 81         public Apple(int weight, String color) {
 82             this.weight = weight;
 83             this.color = color;
 84         }
 85 
 86         public Integer getWeight() {
 87             return weight;
 88         }
 89 
 90         public void setWeight(Integer weight) {
 91             this.weight = weight;
 92         }
 93 
 94         public String getColor() {
 95             return color;
 96         }
 97 
 98         public void setColor(String color) {
 99             this.color = color;
100         }
101 
102         public String toString() {
103             return "Apple{" +
104                     "color='" + color + '\'' +
105                     ", weight=" + weight +
106                     '}';
107         }
108     }
109 }

 

posted @ 2017-10-03 15:10  咸_鱼  Views(165)  Comments(0Edit  收藏  举报