JDK8—函数式处理(I)

    xiaoxiao2023-10-15  27

    引入流

    流是啥流与集合流的操作

    流是啥

    流是JavaAPI的新成员,它允许你以声明性方式处理数据集合。 例如:实现返回热量低的菜肴的名称

    jdk7 List<Dish> lowCaloricDishes = new ArrayList<>(); for(Dish d : menu){ if(d.getCalories()<400){ lowCaloricDishes.add(d) //累加器筛选出元素 } } Collections.sort(lowCaloricDishes,new Comparator<Dishes>(){ public int compare(Dish d1,Dish d2){ return Integer.compare(d1.getCalories,d2.getCalories); //匿名内部类进行排序 } }) List<String> lowCaloricDishesName = new ArrayList<>(); for(Dish d:lowCaloricDishes){ lowCaloricDishesName.add(d.getName()); //讲菜名放到集合中 } jdk8 List<String> lowCaloricDishesName = menu.stream() .filter(d->d.getCalories()<400) //筛选出热量小于 .sorted(comparing(Dish::getCalories)) //排序 .map(Dish::getName) //取出菜名 .collect(toList()); //保存到list中

    总结一下,Stream 让你的代码 声明性——更简洁,更易读 可复合——更灵活 可并行——性能更好

    流与集合

    集合讲的是数据 流讲的是计算

    只能遍历一次 和迭代器类似,只能遍历一次。遍历完之后,我们就说这个流已经被消费掉了。 使用内部迭代

    流的操作

    简单叙述一下,后面会详细讲解,还是以上面的选出低热量的菜肴为例

    menu -> filter -> map ->limit ->list 数据源 中间操作 终端操作
    最新回复(0)