使用无限流的前提条件

??流是惰性的,分为中间操作和终止操作,在执行终止操作之前,流的遍历不会开始,基于这一特性,才可以使用无限流;

??使用无限流,需要正确的做限制(limit),截断流。

无限流的两种生成方式

iterate():接收一个初始元素seed,生成从seed到f的迭代流

/**

* @param seed 初始元素

* @param f UnaryOperator,函数式接口,接收T类型参数,调用apply后返回T本身,应用于上一个元素以产生新元素

*/

public static Stream iterate(final T seed, final UnaryOperator f) {}

??eg:创建一个从0开始,每次加2的无限流,并限制收集前十个元素

List list = Stream.iterate(0, c -> c + 2)

.limit(10)

.collect(Collectors.toList());

//output:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

??eg:斐波那契数列,从[0, 1]开始,下一个元素是前两个元素之和,并限制收集前十个数组中的首元素

List list = Stream.iterate(new Integer[]{0, 1}, c -> new Integer[]{c[1], c[0] + c[1]})

.map(c -> c[0])

.limit(10)

.collect(Collectors.toList());

//output:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

generate():接收一个Supplier函数式接口作为参数,生成迭代流

/**

* @param s Supplier,函数式接口,生产者,返回T

*/

public static Stream generate(Supplier s) {}

??eg:生成十个随机数

List list = Stream.generate(Math::random)

.limit(10)

.collect(Collectors.toList());

原文:https://www.cnblogs.com/milete/p/14050460.html

java8 无限流_Java8-无限流相关推荐

  1. java8 stream 教程_java8 Stream 流快速入门

    Stream 流 简介 Java 8 中,得益于 lambda 带来的函数式编程,引入了一个全新的 Stream流 概念,用于解决集合已有的弊端. 好处 我们先来看一个例子: 筛选出 names 中以 ...

  2. java8 list切片_Java8新特性_创建 Stream、流筛选与切片

    package com.atguigu.java8; import java.util.ArrayList; import java.util.Arrays; import java.util.Ite ...

  3. java8遍历数组_java8新特性,使用流遍历集合

    在这篇"Java 8新特性教程"系列文章中,我们会深入解释,并通过代码来展示,如何通过流来遍历集合,如何从集合和数组来创建流,以及怎么聚合流的值. 在之前的文章"遍历.过 ...

  4. Java8新特性之Stream流式编程

    特地感谢鲁班大叔的分享,原学习地址:Java8 Stream流式编程爱 撸码就是快,流式编程好 代码传家宝 以下是学习过程整理的笔记 1.简介 Stream 流处理,首先要澄清的是 java8 中的 ...

  5. java8新特性之Stream流

    一.什么是Stream流 Stream是java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找.过滤.映射数据等操作,使用Stream API对集合数据进行操作就 ...

  6. java8函数式编程之Stream流处理的方法和案例讲解

    函数式编程最早是数学家阿隆佐·邱奇研究的一套函数变换逻辑,又称Lambda Calculus(λ-Calculus),所以也经常把函数式编程称为Lambda计算. 为什么Java需要Lambda表达式 ...

  7. 使用Java8新特性(stream流、Lambda表达式)实现多个List 的笛卡尔乘积 返回需要的List<JavaBean>

    需求分析: 有两个Long类型的集合 : List<Long> tagsIds; List<Long> attributesIds; 现在需要将这两个Long类型的集合进行组合 ...

  8. java stream byte_乐字节-Java8新特性之Stream流(上)

    上一篇文章,小乐给大家介绍了<Java8新特性之方法引用>,下面接下来小乐将会给大家介绍Java8新特性之Stream,称之为流,本篇文章为上半部分. 1.什么是流? Java Se中对于 ...

  9. Java8新特性之Stream流的使用

    Stream 是Java8中处理集合的关键抽象概念,它可以对集合进行非常复杂的查找.过滤.筛选等操作,在新版的JPA中,也已经加入了Stream. 1.Stream的操作步骤 Stream有如下三个操 ...

  10. Java8 方法引用和Stream流

    Stream 流API 什么是流 流的操作种类 流的操作过程 使用流 创建流 集合 数组 值 筛选 filter 去重 distinct 截取 limit 跳过 skip 映射 map 合并多个流 是 ...

最新文章

  1. RDKit | 基于RDKit获取分子3D距离矩阵
  2. Linux --Solr 安装/配置
  3. 升级asp.net1.0到1.1
  4. JS 之 数据类型转换
  5. prefuse学习(二)显示一张图
  6. springmvc简单示例
  7. AspNetCoreRateLimit - ASP.NET Core 速率限制中间件。
  8. 前端学习(927):淘宝flexiblejs源码分析之pageshow原理
  9. 世界最早投入运行的计算机网络是,世界最早投入运行的计算机网络是
  10. 2019CCPC湖南全国邀请赛-Chika and Friendly Pairs- 莫队+树状数组+离散化
  11. python中如何定义函数的传入参数是option的_python – 当使用@ click.option将命令行参数传递给函数时,如何返回值?...
  12. java的前台与后台
  13. ORCLE INNODB 博客与 innodb_lru_scan_depth
  14. 【纯干货】中国的支付清算体系是怎么玩的?
  15. android开发动画和壁纸,Android静态壁纸和动态壁纸的使用和理解
  16. 使用Nginx搭建图片服务器
  17. Java中创建对象有哪几种方式,Java 中创建对象的4种方式--Java学习网
  18. 《如何阅读一本书》做一名“棒球赛中的捕手”
  19. excel波士顿矩阵怎么做_excel矩阵图怎么做
  20. linux 声音控制 命令,命令行下调整声音大小

热门文章

  1. 微信api调用限制,45009 reach max api daily quota limit 解决方法
  2. 旅行照片剪辑--苏州同里篇
  3. java 对List按照某个字段分组
  4. Arduino读取GPS模块
  5. RFID相关的两个标准协议接口 PC/SC 和 CCID
  6. IPV6天窗问题,以及解决方法简述
  7. 在中科院计算所实习的一年(更新中。。)
  8. 电子制造仓储条码管理系统解决方案
  9. 输入法只能输入英文,无法输入中文
  10. MATLAB高光谱图像处理基础