Java8 Stream用法,从此告别shi山

69 阅读1分钟

对数据库查询到的菜肴根据菜肴种类进行分类,返回一个Map<Type, List<Dish>>的结果

这要是放在jdk8之前肯定会头皮发麻

Java8以前的实现方式
private static Map<TypeList<Dish>> beforeJdk8(List<Dish> dishList) {
    Map<TypeList<Dish>> result = new HashMap<>();
    for (Dish dish : dishList) {
        //不存在则初始化
        if (result.get(dish.getType())==null) {
            List<Dish> dishes = new ArrayList<>();
            dishes.add(dish);
            result.put(dish.getType(), dishes);
        } else {
            //存在则追加
            result.get(dish.getType()).add(dish);
        }
    }
    return result;
}

还好jdk8有Stream,再也不用担心复杂集合处理需求

Java8以后的实现方式
private static Map<TypeList<Dish>> afterJdk8(List<Dish> dishList) {
    return dishList.stream().collect(groupingBy(Dish::getType));
}

又是一行代码解决了需求,忍不住大喊Stream API牛批 看到流的强大功能了吧,接下来将详细介绍流