对数据库查询到的菜肴根据菜肴种类进行分类,返回一个
Map<Type, List<Dish>>的结果
这要是放在jdk8之前肯定会头皮发麻
Java8以前的实现方式
private static Map<Type, List<Dish>> beforeJdk8(List<Dish> dishList) {
Map<Type, List<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<Type, List<Dish>> afterJdk8(List<Dish> dishList) {
return dishList.stream().collect(groupingBy(Dish::getType));
}
又是一行代码解决了需求,忍不住大喊Stream API牛批 看到流的强大功能了吧,接下来将详细介绍流