Stream multigrouping

initial data

public class DataDemo {

    public enum CaloriesType {LOW, NORMAL, HIGH};

    public static List<Dish> menu = Arrays.asList(
            new Dish("pork", false, 800, Dish.Type.MEAT)
            , new Dish("beef", false, 700, Dish.Type.MEAT)
            , new Dish("chicken", false, 400, Dish.Type.MEAT)
            , new Dish("french fries", true, 530, Dish.Type.OTHER)
            , new Dish("rice", true, 350, Dish.Type.OTHER)
            , new Dish("season fruit", true, 120, Dish.Type.OTHER)
            , new Dish("pizza", true, 550, Dish.Type.OTHER)
            , new Dish("prawns", false, 300, Dish.Type.FISH)
            , new Dish("prawns", false, 300, Dish.Type.FISH)
            , new Dish("salmon", false, 450, Dish.Type.FISH) );

}

domain

static void multilevelGrouping(){
        Map<Dish.Type, Map<Dish.CaloriesType, List<Dish>>> map = DataDemo.menu.stream()
                .collect(groupingBy(Dish::getType,
                        groupingBy(
                                dish -> {
                                    if(dish.getCalories() < 400)return Dish.CaloriesType.LOW;
                                    else if(dish.getCalories() < 700) return Dish.CaloriesType.NORMAL;
                                    else return Dish.CaloriesType.HIGH;
                                })));
        System.out.println(map);
    }在這裏插入代碼片

多級分組

static void multilevelGrouping(){
        Map<Dish.Type, Map<Dish.CaloriesType, List<Dish>>> map = DataDemo.menu.stream()
                .collect(groupingBy(Dish::getType,
                        groupingBy(
                                dish -> {
                                    if(dish.getCalories() < 400)return Dish.CaloriesType.LOW;
                                    else if(dish.getCalories() < 700) return Dish.CaloriesType.NORMAL;
                                    else return Dish.CaloriesType.HIGH;
                                })));
        System.out.println(map);
    }
發佈了34 篇原創文章 · 獲贊 0 · 訪問量 2076
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章