标签:不用 不可 函数式编程 byte for 不能 java对象 序列 元素
Java8引入全新的Stream API
java.io | java.util.stream | |
存储 | 顺序读写的byte/char | 顺序输出的任一Java对象 |
用途 | 序列化数据至文件/网络 | 内存计算/业务逻辑 |
List元素已经分配并存储在内存中的,而Stream输出的元素并没有预先存储在内存中,它通常是实时计算出来的。
List的用途是操作一组已存在的Java对象,而Stream实现是各种变换和惰性计算。
java.util.List | java.util.stream | |
元素 | 已分配并存储在内存 | 未分配,实时计算 |
用途 | 操作一组已存在的Java对象 | 惰性计算 |
用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的特点:
廖雪峰Java16函数式编程-2Stream-1Stream简介
标签:不用 不可 函数式编程 byte for 不能 java对象 序列 元素
原文地址:https://www.cnblogs.com/csj2018/p/11473899.html