美文网首页
JDK1.8新特新之stream流

JDK1.8新特新之stream流

作者: ironf | 来源:发表于2020-03-15 20:36 被阅读0次
stream流可以看成一种高级的iteror

她有以下几个特性:

    1.惰式执行:中间操作只会生成标记,结束操作会触发实际计算,计算发生时会把所有中间操作积攒的操作以pipeline
               的方式执行,这样可以减少迭代次数。计算完成之后stream就会失效。
               也就是说stream上的操作并不会立即执行,只有等到用户真正需要结果的时候才会执行。
               
    2.无存储:stream不是一种数据结构,它只是某种数据源的一个视图,
             数据源可以是一个数组,Java容器或I/O channel等。
             
    3.为函数式编程而生:对stream的任何修改都不会修改背后的数据源,比如对stream执行过滤操作
                     并不会删除被过滤的元素,而是会产生一个不包含被过滤元素的新stream。
                     
    4.可消费性:stream只能被“消费”一次,一旦遍历过就会失效,就像容器的迭代器那样,想要再次遍历必须重新生成。 
    
使用:获取流及流的使用
在这里插入图片描述
测试数据:List<User> list=new ArrayList<>(); 

    遍历:forEach()
        lambda: list.forEach(user -> System.out,println(user))
        stream流: list.stream().forEach(user -> System.out,println(user))
        
    排序:sort()
        常规方式:
         Collections.sort(list, new Comparator<User>() {
              @Override
              public int compare(User o1, User o2) {
                return o1.getAge().compareTo(o2.getAge());}});
              for (User user : list) {System.out.println(user);}
        stream流:list.stream().sorted(Comparator.comparing(User::getAge)).
                  forEach(user -> System.out.println(user))
                  
    过滤:filter()
        stream流:list.stream().filter((User user) -> user.getAge() > 50).
                forEach(user -> System.out.println(user));
                
    截断:limit()
       list.stream().limit(3).forEach(user -> System.out.println(user));
       
    跳过元素(跳过集合前3个元素):skip()
       list.stream().skip(3).forEach(user -> System.out.println(user));
       
stream流作为jdk8之后的新特性,在对数据的操作上更便利更简洁,但可读性较差;熟悉手用起来还是很棒的。

相关文章

  • JDK1.8新特新之stream流

  • Java | Stream

    简介 Stream流 是 JDK1.8 加入的新特性,Stream流跟I/O流不同,Stream流用于操作数据源(...

  • 【Java】传统方式与聚合操作方式遍历数据

    JDK1.8以后,就有了一个新特新,Stream管道。 遍历数据的传统方式就是使用for循环,然后条件判断,最后打...

  • 新特性之 Stream流

    1.Stream流式思想 当使用一个流的时候,通常包括三个基本步骤:获取一个数据源(source)→ 数据转换→执...

  • Stream流

    Stream流 java8新特性 Stream定义 A sequence of elements supporti...

  • jdk1.8新特性之Stream使用详解

    一、 前言 1、为什么需要 Stream Stream作为Java8的一大亮点,它与 java.io 包里的Inp...

  • Java8 Stream的使用

    概述 Stream是jdk1.8的新特性,可以结合lambada表达式结合使用,可以提高开发效率和性能。 Stre...

  • jdk8 Stream流

    jdk8 Stream流 1.Stream API 简介 Stream API是Java 8中加入的一套新的API...

  • JDK1.8新特性Stream解释

    说明 不要在傻傻地写循环遍历了,使用Stream处理集合更加的简洁明了。需要掌握lambda表达式写法。 环境 J...

  • JDK1.8新特性(三):Stream

    JDK1.8系列文章 JDK1.8新特性(一):Lambda表达式 JDK1.8新特性(二):Optional 类...

网友评论

      本文标题:JDK1.8新特新之stream流

      本文链接:https://www.haomeiwen.com/subject/xqybehtx.html