学习lambda01- 使用lambda Predicate处理 简化代码


import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;

/**
 * ClassName: Apple
 * @Description:
 * @author leegoo
 * @date 2019年04月25日
 */
public class Apple {
    private  Color color;

    private  Integer weight;


    public Integer getWeight() {
        return weight;
    }

    public Apple(Color color) {
        this.color = color;
    }

    public Apple(Color color, Integer weight) {
        this.color = color;
        this.weight = weight;
    }

    public Color getColor() {
        return color;
    }

    @Override
    public String toString() {
        return "Apple{" +
                "color=" + color +
                '}';
    }

    public static List<Apple> pickCustomeColor(List<Apple> list, Predicate<Apple> pre) {
        List<Apple> reuslt = new ArrayList<>();
        list.forEach(e -> {
            if (pre.test(e)) {
                reuslt.add(e);
            }
        });
        return reuslt;
    }

    public static void main(String[] args) {
        List<Apple> allList  = new ArrayList<>();

        //增加多个苹果(各种颜色)
        allList.add(new Apple(Color.BLACK));
        allList.add(new Apple(Color.RED));
        allList.add(new Apple(Color.RED));
        allList.add(new Apple(Color.GREE));

        //挑选红色的苹果
        // 其中pickCustomeColor()发方法 第二个参数是需要传入Predicate 根据Predicate的解释,参数需要传入返回boolean(Boolean)类型的参数,Predicate泛型中,这里我加入了Apple类型
        //(Apple a) -> Color.RED.equals(a.getColor())   这里通过color判断是否相等,返回的结果肯定是boolean类型
        List<Apple> apples = pickCustomeColor(allList, (Apple a) -> Color.RED.equals(a.getColor()));
        //结果打印 [Apple{color=RED}, Apple{color=RED}]
        System.out.println("apples:"+apples);

        //接下来用挑选 绿色苹果和重量小于150g的
        allList = new ArrayList<>();  //此处需要重新new一下(或者使用一个新的list对象),因为List中保存先前的Apple对象只有一个属性color,但是 3处的代码却有两个条件判断(color,weight),即 null 不能getWeight()
        allList.add(new Apple(Color.BLACK,110));
        allList.add(new Apple(Color.RED,80));
        allList.add(new Apple(Color.GREE,150));
        allList.add(new Apple(Color.GREE,110));
        List<Apple> apple2 = pickCustomeColor(allList, (Apple a) -> Color.RED.equals(a.getColor()) && a.getWeight()<150); //3
        System.out.println("apple2:"+apple2);
    }
}

enum Color {
    GREE, RED, BLACK, BLUE,None;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章