zoukankan      html  css  js  c++  java
  • 廖雪峰Java16函数式编程-2Stream-1Stream简介

    1. Stream

    Java8引入全新的Stream API

    • 位于java.util.stream包

    1.1 Stream API不同于java.io的InputStream/OutputStream

    java.iojava.util.stream
    存储顺序读写的byte/char顺序输出的任一Java对象
    用途序列化数据至文件/网络内存计算/业务逻辑
    ### 1.2 Stream和List也是不同的 List元素已经分配并存储在内存中的,而Stream输出的元素并没有预先存储在内存中,它通常是实时计算出来的。 List的用途是操作一组已存在的Java对象,而Stream实现是各种变换和惰性计算。
    java.util.Listjava.util.stream
    元素已分配并存储在内存未分配,实时计算
    用途操作一组已存在的Java对象惰性计算

    2. 例子:全体自然数的集合

    用List不可能盛放这个集合的,因为自然数是无限大的,内存再大,也不能放入List中,但用Stream可以做到

        Stream<BigInteger> naturals = createNaturalStream(); //不用考虑createNaturalStream()如何实现
        naturals.map( (n)->n.multiply(n) )  //输出自然数的平方
            .limit(100) //取前100个元素
            .foreach(System.out::println); //处理每个元素
    

    调用方对每个自然数计算平方,这样就把一个stream转换成另一个stream。因为获取的stream也是无限的,所以我们必须把无限个元素转换为有限个元素,并处理这个有限集合的每个元素

    Stream的特点:

    • 可以存储有限个或无限个元素
    • 可以转换为另一个Stream
    • 计算通常发生在最后结果的获取(惰性计算)
  • 相关阅读:
    [mock open]PyUnit执行单元测试时使用字符串模拟文件对象
    bottle 0.5中的key-value数据库
    bottle模板中的替换
    返回不同值的小技巧
    带有参数的装饰器
    常用命令速查
    SQLAlchemy多线程下事务隔离机制详解
    Bancor 协议浅析
    Flask中 endpoint 解析
    pip 相关问题
  • 原文地址:https://www.cnblogs.com/csj2018/p/11473899.html
Copyright © 2011-2022 走看看