java8 无限流_Java8-无限流
使用无限流的前提条件
??流是惰性的,分为中间操作和终止操作,在执行终止操作之前,流的遍历不会开始,基于这一特性,才可以使用无限流;
??使用无限流,需要正确的做限制(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-无限流相关推荐
- java8 stream 教程_java8 Stream 流快速入门
Stream 流 简介 Java 8 中,得益于 lambda 带来的函数式编程,引入了一个全新的 Stream流 概念,用于解决集合已有的弊端. 好处 我们先来看一个例子: 筛选出 names 中以 ...
- java8 list切片_Java8新特性_创建 Stream、流筛选与切片
package com.atguigu.java8; import java.util.ArrayList; import java.util.Arrays; import java.util.Ite ...
- java8遍历数组_java8新特性,使用流遍历集合
在这篇"Java 8新特性教程"系列文章中,我们会深入解释,并通过代码来展示,如何通过流来遍历集合,如何从集合和数组来创建流,以及怎么聚合流的值. 在之前的文章"遍历.过 ...
- Java8新特性之Stream流式编程
特地感谢鲁班大叔的分享,原学习地址:Java8 Stream流式编程爱 撸码就是快,流式编程好 代码传家宝 以下是学习过程整理的笔记 1.简介 Stream 流处理,首先要澄清的是 java8 中的 ...
- java8新特性之Stream流
一.什么是Stream流 Stream是java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找.过滤.映射数据等操作,使用Stream API对集合数据进行操作就 ...
- java8函数式编程之Stream流处理的方法和案例讲解
函数式编程最早是数学家阿隆佐·邱奇研究的一套函数变换逻辑,又称Lambda Calculus(λ-Calculus),所以也经常把函数式编程称为Lambda计算. 为什么Java需要Lambda表达式 ...
- 使用Java8新特性(stream流、Lambda表达式)实现多个List 的笛卡尔乘积 返回需要的List<JavaBean>
需求分析: 有两个Long类型的集合 : List<Long> tagsIds; List<Long> attributesIds; 现在需要将这两个Long类型的集合进行组合 ...
- java stream byte_乐字节-Java8新特性之Stream流(上)
上一篇文章,小乐给大家介绍了<Java8新特性之方法引用>,下面接下来小乐将会给大家介绍Java8新特性之Stream,称之为流,本篇文章为上半部分. 1.什么是流? Java Se中对于 ...
- Java8新特性之Stream流的使用
Stream 是Java8中处理集合的关键抽象概念,它可以对集合进行非常复杂的查找.过滤.筛选等操作,在新版的JPA中,也已经加入了Stream. 1.Stream的操作步骤 Stream有如下三个操 ...
- Java8 方法引用和Stream流
Stream 流API 什么是流 流的操作种类 流的操作过程 使用流 创建流 集合 数组 值 筛选 filter 去重 distinct 截取 limit 跳过 skip 映射 map 合并多个流 是 ...
最新文章
- RDKit | 基于RDKit获取分子3D距离矩阵
- Linux --Solr 安装/配置
- 升级asp.net1.0到1.1
- JS 之 数据类型转换
- prefuse学习(二)显示一张图
- springmvc简单示例
- AspNetCoreRateLimit - ASP.NET Core 速率限制中间件。
- 前端学习(927):淘宝flexiblejs源码分析之pageshow原理
- 世界最早投入运行的计算机网络是,世界最早投入运行的计算机网络是
- 2019CCPC湖南全国邀请赛-Chika and Friendly Pairs- 莫队+树状数组+离散化
- python中如何定义函数的传入参数是option的_python – 当使用@ click.option将命令行参数传递给函数时,如何返回值?...
- java的前台与后台
- ORCLE INNODB 博客与 innodb_lru_scan_depth
- 【纯干货】中国的支付清算体系是怎么玩的?
- android开发动画和壁纸,Android静态壁纸和动态壁纸的使用和理解
- 使用Nginx搭建图片服务器
- Java中创建对象有哪几种方式,Java 中创建对象的4种方式--Java学习网
- 《如何阅读一本书》做一名“棒球赛中的捕手”
- excel波士顿矩阵怎么做_excel矩阵图怎么做
- linux 声音控制 命令,命令行下调整声音大小