java8 流操作

Posted 陆伟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 方法让你把一个流中的每个值都换成另一个流,然后把所有的流连接起来成为一个流

以上是关于java8 流操作的主要内容,如果未能解决你的问题,请参考以下文章

Java8 Stream流如何操作集合,一文带你了解!

Java8 Stream流如何操作集合,一文带你了解!

java多线程java8的流操作api和fork/join框架

Java开发工程师进阶篇-Java8的Stream流使用技巧

Java8新特性--Stream流操作

还看不懂同事的代码?超强的 Stream 流操作姿势还不学习一下