java8 流操作
对应的代码:
package com.company.stream; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; // java8去处理集合 public class StreamBasic { public static void main(String ... args) { getLowCaloricDishesNamesInJava8(Dish.menu).forEach(System.out :: println); } //我们可以在程序中进行数据库式的查询。 /** * filter ——接受Lambda,从流中排除某些元素。在本例中,通过传递lambda d -> * d.getCalories() > 300 ,选择出热量超过300卡路里的菜肴。 * * map ——接受一个Lambda,将元素转换成其他形式或提取信息。在本例中,通过传递方 * 法引用 Dish::getName ,相当于Lambda d -> d.getName() ,提取了每道菜的菜名。 * * limit ——截断流,使其元素不超过给定数量。 * * collect ——将流转换为其他形式。 * @param dishes * @return */ public static List<String> getLowCaloricDishesNamesInJava8(List<Dish> dishes){ return dishes.stream() .filter(d -> d.getCalories() > 300) //卡路里高于 300 .sorted(Comparator.comparing(Dish :: getCalories).reversed()) //根据卡路里进行倒序 大的在上面。 .limit(3) //只选取前三个 .map(Dish::getName) //提取名字 .collect(Collectors.toList()); // 将所有的名字保存到list中。 } }
flatmap 方法让你把一个流中的每个值都换成另一个流,然后把所有的流连接起来成为一个流