學習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;
}


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