java8先用groupingBy分组,再使用joining将某个字段进行拼接

eg:按菜的类型进行分组,并将菜名进行拼接
public class Dish {

    private final String name;
    private final  boolean vegetarian;
    private final   int calories;
    private final  Type type;
}
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("salmon", false, 450, Dish.Type.FISH));

Map collect9 = menu.stream().collect(groupingBy(Dish::getType,
                mapping(Dish::getName, joining(","))
        ));

 

你可能感兴趣的:(java8先用groupingBy分组,再使用joining将某个字段进行拼接)