java8 流

实现:赛选苹果

基类

public class Apple {
	private String color;
	private int weight;
	
	
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public int getWeight() {
		return weight;
	}
	public void setWeight(int weight) {
		this.weight = weight;
	}
	
	public static boolean isGreenApple(Apple apple) {
		return "green".equals(apple.getColor());
	}
	public static boolean isHeavyApple(Apple apple) {
		return apple.getWeight() > 150;
	}
}

  方法类:

    原始做法   
     public static List<Apple> filterGreenApples(List<Apple> inventory){ List<Apple> result = new ArrayList<>(); for (Apple apple: inventory){ if ("green".equals(apple.getColor())) { result.add(apple); } } return result; } public static List<Apple> filterHeavyApples(List<Apple> inventory){ List<Apple> result = new ArrayList<>(); for (Apple apple: inventory){ if (apple.getWeight() > 150) { result.add(apple); } } return result; } java8 做法 //---------------------------------------------------------------------- static List<Apple> filterApples(List<Apple> inventory, Predicate<Apple> p) { List<Apple> result = new ArrayList<>(); for (Apple apple: inventory){ if (p.test(apple)) { result.add(apple); } } return result; } public static void main(String[] args) { List<Apple> inventory = new ArrayList<>(); List<Apple> result = filterApples(inventory, (Apple a)-> "green".equals(a.getColor())); }

 知识点:

 

如上图,接口类,可以写default 开头的方法,此方法可以直接写实现,而且,子类不用集成此方法

posted on 2017-11-15 18:13  一个帅哥9527  阅读(157)  评论(0编辑  收藏  举报