java8新特性lambda表達式03

我們繼續來做一些lambda的研究,在第一節中我給大家介紹了一些lambda表達式條件篩查的方法,顯然有些同學認爲這並不太符合複雜場景的使用,也顯得不夠面向對象化。我們再來看看如何更簡潔的應用lambda。
看看下面這段代碼

這是Car類

package yick.demo.lambda02;

import java.io.Serializable;

public class Car implements Serializable{
    
    private String carNo;
    
    private String carName;
    
    private Color carColor;
    
    public Car() {
        
    }

    public Car(Color color, String carNo, String carName) {
        this.carNo=carNo;
        this.carColor=color;
        this.carName=carName;
    }

    public String getCarNo() {
        return carNo;
    }

    public void setCarNo(String carNo) {
        this.carNo = carNo;
    }

    public String getCarName() {
        return carName;
    }

    public void setCarName(String carName) {
        this.carName = carName;
    }

    public Color getCarColor() {
        return carColor;
    }

    public void setCarColor(Color carColor) {
        this.carColor = carColor;
    }
}

這是Car顏色的枚舉類

package yick.demo.lambda02;

public enum Color {

    RED,GREEN,YELOOW;
}

這是咋們測試的方法

public interface AppFilter {
        boolean accept(Car car);
    }

    /**
     * 條件過濾
     * 
     * @param carList
     * @param appFilter
     */
    public static List<Car> filter(List<Car> carList, AppFilter appFilter) {
        List<Car> resultCars = carList.stream().filter(c -> {
            return appFilter.accept(c);
        }).collect(Collectors.toList());
        return resultCars;
    }

public static void main(String[] args) {
        List<Car> carlList = new ArrayList<Car>();
        carlList.add(new Car(Color.GREEN, "001", "mazda"));
        carlList.add(new Car(Color.RED, "002", "benz"));

        Lambda02.filter(carlList, new AppFilter() {
            @Override
            public boolean accept(Car car) {
                return Color.RED.equals(car.getCarColor()) && "benz".equals(car.getCarName());
            }
        });

    }

非常一目瞭然,通過lambda的特性我們使用了一個過濾器,就大致簡單的把數組裏符合條件的汽車篩選出來,顯然比多參數傳遞更優雅,更符合面向對象的思想。

遍歷方法

Map<String, Integer> items = new HashMap<>();
        items.put("A", 10);
        items.put("B", 20);
        items.put("C", 30);
        items.put("D", 40);
        items.put("E", 50);
        items.put("F", 60);

        items.forEach((k, v) -> {
            System.out.print(v + "\n");
});

List<String> list = new ArrayList<String>();
        list.add("2");
        list.add("2");
        list.add("2");
        list.add("2");
        list.add("2");
        list.add("2");
        list.forEach(s -> {
            System.out.print(s);
        });
18094074-ff595011e27c6780.jpg
有你的支持,我會更努力哦!!!.jpg
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章