首页 > 其他分享 >Stream流

Stream流

时间:2023-09-25 11:06:20浏览次数:26  
标签:Student Stream list System student println out

Stream流中间方法

public class Demo01 {
    public static void main(String[] args) {
        Student s1 = new Student("蜘蛛精", 26, 172.5);
        Student s2 = new Student("蜘蛛精", 26, 172.5);
        Student s3 = new Student("紫霞", 23, 167.6);
        Student s4 = new Student("白晶晶", 25, 169.0);
        Student s5 = new Student("牛魔王", 35, 183.3);
        Student s6 = new Student("牛夫人", 34, 168.5);
        List<Student> list = new ArrayList<>();
        Collections.addAll(list,s1,s2,s3,s4,s5,s6);

        //filter 过滤  
        //sort 排序
        list.stream().
                filter(student -> student.getHeight() > 170).
                sorted(Comparator.comparing(Student::getAge)).
                forEach(student -> System.out.println(student));

        System.out.println("-----------------------------------");

        list.stream().filter(student -> student.getAge() > 30)
                .sorted((o1, o2) -> o2.getAge() - o1.getAge())
                .forEach(student -> System.out.println(student));

        System.out.println("-------------------------");

       //limit 获取前几个元素
       list.stream().sorted((o1, o2) -> Double.compare(o2.getHeight(),o1.getHeight()))
               .limit(3)
               .forEach(student -> System.out.println(student));
        System.out.println("----------------------------------------------");

        //skip 跳过前几个元素
        list.stream().sorted((o1, o2) -> Double.compare(o2.getHeight(),o1.getHeight()))
                .skip(list.size()-2)
                .forEach(student -> System.out.println(student));
        System.out.println("----------------------------------------------");

        //distinct 去除重复元素
       list.stream().filter(student -> student.getHeight()>170)
               .map(student -> student.getHeight())
               .distinct()
               .forEach(student -> System.out.println(student));
        System.out.println("----------------------------------------------");


        //concat 连接两个流
        Stream<String> stream1 = Stream.of("阿大", "阿二");
        Stream<String> stream2 = Stream.of("阿三", "阿四");
        Stream.concat(stream1,stream2).forEach(student -> System.out.println(student));
    }
}

Stream流终结方法

public class Demo02 {
    public static void main(String[] args) {
        Student s1 = new Student("蜘蛛精", 26, 172.5);
        Student s2 = new Student("蜘蛛精", 26, 172.5);
        Student s3 = new Student("紫霞", 23, 167.6);
        Student s4 = new Student("白晶晶", 25, 169.0);
        Student s5 = new Student("牛魔王", 35, 183.3);
        Student s6 = new Student("牛夫人", 34, 168.5);
        List<Student> list = new ArrayList<>();
        Collections.addAll(list,s1,s2,s3,s4,s5,s6);

        //count 统计元素个数
        System.out.println(list.stream().filter(student -> student.getHeight() < 170).count());
        //max 获取最大值
        System.out.println(list.stream().max((o1, o2) -> Double.compare(o1.getHeight(),o2.getHeight())).get());

        //min 获取最小值
        System.out.println(list.stream().min(Comparator.comparingDouble(Student::getHeight)).get());

        System.out.println("__________________________________________");

        //collect 将Stream流中的元素收集到一个集合中
        System.out.println(list.stream().filter(student -> student.getAge() > 30).collect(Collectors.toList()));
        System.out.println(list.stream().filter(student -> student.getAge() < 30).collect(Collectors.toSet()));

        System.out.println("----------------------------------------------");
        list.stream().filter(student -> student.getAge() > 30)
                .collect(Collectors.toMap(student -> student.getName(), student -> student.getHeight()))
                .forEach((s, aDouble) -> System.out.println("key="+s+",value="+aDouble));
    }
}

标签:Student,Stream,list,System,student,println,out
From: https://blog.51cto.com/u_16245664/7593494

相关文章

  • Stream流常用操作
    Stream流是Java8引入的一个新特性,它提供了一种更简洁、更高效的方式来处理集合数据。Stream流的操作可以分为两种:中间操作和终端操作。中间操作(IntermediateOperations):filter(Predicate<T> predicate):根据指定的条件过滤流中的元素。map(Function<T,R>mapper):将流中的每......
  • Blob、InputStream、byte 互转
    在我们的程序开发当中,经常会用到java.sql.Blob、byte[]、InputStream之间的相互转换,但在JDK的API当中,又没有直接给我们提供可用的API,下面的程序片段主要就是实现它们之间互换的util.一、byte[]=>Blob我们可以通过Hibernate提供的表态方法来实现如:org.hibernate.Hibernate.Hiber......
  • java stream流的高端用法
    并行流(ParallelStream):Stream提供了parallel()方法,可以将普通的顺序流转换为并行流,以便使用多线程并发执行操作。例如:list.parallelStream().filter(...).map(...).forEach(...);并行流适用于对大规模数据进行操作,并且可以通过并行计算充分利用多核处理器的能力......
  • java stream流的高端用法
    并行流(ParallelStream):Stream提供了parallel()方法,可以将普通的顺序流转换为并行流,以便使用多线程并发执行操作。例如:list.parallelStream().filter(...).map(...).forEach(...);并行流适用于对大规模数据进行操作,并且可以通过并行计算充分利用多核处理器的能力......
  • Http Fetch+StreamSaver.js在内存有限的设备下载大文件
    目前前端没有很好的api支持流式的文件的分片下载。如果直接把整个文件保存到Blob对象中再保存,有可能出现很多不可以预期的问题,可能会因为达到浏览器的Blob对象上限而下载失败。也有机会因为客户端内存太低而导致OOM。那如果我们有额外的文件服务器的话,可以选择把文件先导出到文件......
  • Java stream 中 peek() 的合理用法
    目录背景最终操作(terminaloperation)peek()vsforEach()peek()的典型用法:协助调试小结参考链接背景这周遇到了一件很有意思的事情。在看项目代码时,发现了这么一段:returnobjects.stream() .peek(object->addInfo(object,someParams)) .collect(Collectors.toL......
  • Stream流处理快速上手最佳实践 | 京东物流技术团队
    一引言JAVA1.8得益于Lambda所带来的函数式编程,引入了一个全新的Stream流概念Stream流式思想类似于工厂车间的“生产流水线”,Stream流不是一种数据结构,不保存数据,而是对数据进行加工处理。Stream可以看作是流水线上的一个工序。在流水线上,通过多个工序让一个原材料加工成一个商品。......
  • 关于getClass().getClassLoader().getResourceAsStream——转载自https://www.cnblogs
    关于getClass().getClassLoader().getResourceAsStreamInputStreamis=getClass().getClassLoader().getResourceAsStream("helloworld.properties");getClass():取得当前对象所属的Class对象getClassLoader():取得该Class对象的类装载器类装载器负责从Java字符文件将字符流读......
  • 选择适合你的Spring Cloud Stream Binder
    前言SpringCloudStream是一个用于构建消息驱动微服务的框架,它提供了一种简单的方式来连接消息代理和应用程序。其中最重要的组件是Binder,它负责将应用程序与消息代理连接起来。SpringCloudStream提供了多个Binder实现,包括Kafka、RabbitMQ、Kinesis等。在本文中,我们将深入探讨......
  • 《Java编程思想第四版》学习笔记28--关于StreamTokenizer
    //:SortedWordCount.java//Countswordsinafile,outputs//resultsinsortedform.importjava.io.*;importjava.util.*;importc08.*;//ContainsStrSortVectorclassCounter{privateinti=1;intread(){returni;}voidincrement(){i++;}}pu......