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 方法让你把一个流中的每个值都换成另一个流,然后把所有的流连接起来成为一个流

原文地址:https://www.cnblogs.com/bulrush/p/12303509.html