Stream流,集合与基本数组的相互转换
Arrays类的Api

stream()方法传入数组,返回对应的stream流。
Collection集合的Api:

stream()不传参数,返回Stream流。
有了上述Api可以完成如下转换....
集合与基本数组的相互转换
@Test
public void test5(){
int[] array = {1, 2, 5, 5, 5, 5, 6, 6, 7, 2, 9, 2}; /*int[]转list*///java8及以上版本
List<Integer> list1 = Arrays.stream(array).boxed().collect(Collectors.toList()); /*list转int[]*/
//方法一:
Integer[] intArr = list.toArray(new Integer[list.size()]);
//方法二:java8及以上版本
int[] intArr1 = list.stream().mapToInt(Integer::valueOf).toArray(); }
补充Stream的Api:
拿到stream流之后,可以根据stream方法的返回值类型,如果仍然是Stream就可以疯狂的链式调用stream的Api了。
| Modifier and Type | Method and Description |
|---|---|
boolean |
allMatch(Predicate<? super T> predicate)
返回此流中的所有元素是否匹配所提供的谓词。
|
boolean |
anyMatch(Predicate<? super T> predicate)
返回此流中的任何元素是否匹配所提供的谓词。
|
static <T> Stream.Builder<T> |
builder()
返回一个
Stream生成器。 |
<R,A> R |
collect(Collector<? super T,A,R> collector)
执行 mutable reduction操作对元素的使用
Collector流。 |
<R> R |
collect(Supplier<R> supplier, BiConsumer<R,? super T> accumulator, BiConsumer<R,R> combiner)
执行该流的元素 mutable reduction操作。
|
static <T> Stream<T> |
concat(Stream<? extends T> a, Stream<? extends T> b)
创建一个懒洋洋的级联流的元素的所有元素的第一流通过第二个流的元素。
|
long |
count()
返回此流中元素的计数。
|
Stream<T> |
distinct()
返回一个包含不同的元素流(根据
Object.equals(Object))这个流。 |
static <T> Stream<T> |
empty()
返回一个空的顺序
Stream。 |
Stream<T> |
filter(Predicate<? super T> predicate)
返回由该流的元素组成的流,该元素与给定的谓词匹配。
|
Optional<T> |
findAny()
返回一个
Optional描述一些流元素,或一个空的 Optional如果流是空的。 |
Optional<T> |
findFirst()
返回一个
Optional描述此流的第一个元素,或者一个空的 Optional如果流是空的。 |
<R> Stream<R> |
flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
返回由将所提供的映射函数应用到每个元素的映射流的内容替换此流的每个元素的结果的结果流。
|
DoubleStream |
flatMapToDouble(Function<? super T,? extends DoubleStream> mapper)
返回一个包含有一个映射的流应用提供的映射功能,每个元件产生的内容替换此流的每个元素的结果
DoubleStream。 |
IntStream |
flatMapToInt(Function<? super T,? extends IntStream> mapper)
返回一个包含有一个映射的流应用提供的映射功能,每个元件产生的内容替换此流的每个元素的结果
IntStream。 |
LongStream |
flatMapToLong(Function<? super T,? extends LongStream> mapper)
返回一个包含有一个映射的流应用提供的映射功能,每个元件产生的内容替换此流的每个元素的结果
LongStream。 |
void |
forEach(Consumer<? super T> action)
对该流的每个元素执行一个动作。
|
void |
forEachOrdered(Consumer<? super T> action)
对该流的每个元素执行一个操作,如果流有一个定义的遇到顺序,则在该流的遇到顺序中执行一个动作。
|
static <T> Stream<T> |
generate(Supplier<T> s)
返回一个无穷序列无序流,其中每个元素是由提供
Supplier生成。 |
static <T> Stream<T> |
iterate(T seed, UnaryOperator<T> f)
返回一个无穷序列有序
Stream由最初的一元 seed函数的 f迭代应用产生的,产生一个由 seed, f(seed), f(f(seed)) Stream,等。 |
Stream<T> |
limit(long maxSize)
返回一个包含该流的元素流,截断长度不超过
maxSize。 |
<R> Stream<R> |
map(Function<? super T,? extends R> mapper)
返回一个流,包括将给定函数应用到该流元素的结果。
|
DoubleStream |
mapToDouble(ToDoubleFunction<? super T> mapper)
返回一个包含应用给定的功能,该流的元素的结果
DoubleStream。 |
IntStream |
mapToInt(ToIntFunction<? super T> mapper)
返回一个包含应用给定的功能,该流的元素的结果
IntStream。 |
LongStream |
mapToLong(ToLongFunction<? super T> mapper)
返回一个包含应用给定的功能,该流的元素的结果
LongStream。 |
Optional<T> |
max(Comparator<? super T> comparator)
返回最大元本流根据提供的
Comparator。 |
Optional<T> |
min(Comparator<? super T> comparator)
返回最小元本流根据提供的
Comparator。 |
boolean |
noneMatch(Predicate<? super T> predicate)
返回此流中的任何元素是否匹配所提供的谓词。
|
static <T> Stream<T> |
of(T... values)
返回一个元素为指定值的顺序排列的流。
|
static <T> Stream<T> |
of(T t)
返回一个包含一个元素的顺序
Stream。 |
Stream<T> |
peek(Consumer<? super T> action)
返回由该流的元素组成的流,并在所提供的流中执行所提供的每个元素上的动作。
|
Optional<T> |
reduce(BinaryOperator<T> accumulator)
|
T |
reduce(T identity, BinaryOperator<T> accumulator)
对这一 reduction流元素,使用提供的价值认同和 associative累积函数,返回值减少。
|
<U> U |
reduce(U identity, BiFunction<U,? super T,U> accumulator, BinaryOperator<U> combiner)
对这一 reduction流元素,使用提供的身份,积累和组合功能。
|
Stream<T> |
skip(long n)
返回一个包含此流的其余部分丢弃的流的第一
n元素后流。 |
Stream<T> |
sorted()
返回由该流的元素组成的流,按自然顺序排序。
|
Stream<T> |
sorted(Comparator<? super T> comparator)
返回一个包含该流的元素流,根据提供的
Comparator排序。 |
Object[] |
toArray()
返回包含此流元素的数组。
|
<A> A[] |
toArray(IntFunction<A[]> generator)
返回一个数组包含该流的元素,使用提供的
generator函数分配的返回的数组,以及可能对分区执行或调整所需的任何额外的数组。 |
Stream带我疯狂....
Stream流,集合与基本数组的相互转换的更多相关文章
- Java的Stream流式操作
前言 最近在实习,在公司看到前辈的一些代码,发现有很多值得我学习的地方,其中有一部分就是对集合使用Stream流式操作,觉得很优美且方便.所以学习一下Stream流,在这里记录一下. Stream是什 ...
- 简洁方便的集合处理——Java 8 stream流
背景 java 8已经发行好几年了,前段时间java 12也已经问世,但平时的工作中,很多项目的环境还停留在java1.7中.而且java8的很多新特性都是革命性的,比如各种集合的优化.lambda表 ...
- Java8 - Stream流:让你的集合变得更简单!
前段时间,在公司熟悉新代码,发现好多都是新代码,全是 Java8语法,之前没有了解过,一直在专研技术的深度,却忘了最初的语法,所以,今天总结下Stream ,算是一份自己理解,不会很深入,就讲讲常用的 ...
- List使用Stream流进行集合Collection的各种运算汇总:对BigDecimal求和,某个字段的和、最大值、最小值、平均值,字段去重,过滤等
写Java接口的朋友都知道,Java 8的更新,经常会用到过滤 list<Object> 里的数据,本文就对List使用Stream流进行集合Collection的各种运算做一个汇总! 优 ...
- Stream流用于按照对象中某一属性来对集合去重+简单数据类型集合的去重
上次对Stream流来进行分组的文章很多人看,想看的可以来这: Stream流来进行集合分组 这次小编又带来Stream的去重,话不多数,直接上代码: 这是对简单数据类型的去重 //字符串集合进行简单 ...
- 使用传统的方式遍历集合对集合中的数据进行过滤和使用Stream流的方式遍历集合对集合中的数据进行过滤
使用传统的方式,遍历集合,对集合中的数据进行过滤 class Test{ public static void main(String[] args){ ArrayList<String> ...
- Java8系列 (二) Stream流
概述 Stream流是Java8新引入的一个特性, 它允许你以声明性方式处理数据集合, 而不是像以前的指令式编程那样需要编写具体怎么实现. 比如炒菜, 用指令式编程需要编写具体的实现 配菜(); 热锅 ...
- Java8学习(4)-Stream流
Stream和Collection的区别是什么 流和集合的区别是什么? 粗略地说, 集合和流之间的差异就在于什么时候进行计算.集合是一个内存中的数据结构,它包含数据结构中目前所有的值--集合中的每个元 ...
- (六)jdk8学习心得之Stream流
六.Stream流 1. 什么是stream流 现阶段,可以把stream流看成一个高级版的Iterator.普通的Iterator只能实现遍历,遍历做什么,就需要具体些功能代码函数了.而这个stre ...
- 13函数式编程&Stream流
13.1常用的函数式接口总结 接口名称 方法名称 抽象/默认 延迟/终结 方法描述 Supplier get 抽象 终结 供给型接口,无参有返回值,主要用于 Consumer accept 抽象 ...
随机推荐
- CCF A类会议 —— AAAI2022 论文审稿模板
======================================================= 前段时间为实验室负责审理AAAI 2022的会议稿件,感觉这个审稿模板还是不错的,这里保 ...
- 洛谷P1842 [USACO05NOV] 奶牛玩杂技
[USACO05NOV] 奶牛玩杂技 题目背景 Farmer John 养了 \(N\) 头牛,她们已经按 \(1\sim N\) 依次编上了号.FJ 所不知道的是,他的所有牛都梦想着从农场逃走,去参 ...
- 从数据到洞察:DataOps加速AI模型开发的秘密实践大公开!
作者 | 代立冬,白鲸开源科技联合创始人&CTO 引言 在AI驱动的商业世界中,DataOps作为连接数据与洞察的桥梁,正迅速成为企业数据战略的核心. 在WOT全球技术创新大会2024·北京站 ...
- SeaTunnel JDBC DB2 Sink Connector支持的工作原理,快来学习吧!
DB2是IBM的一款关系型数据库管理系统,JDBC DB2 Source Connector是一个用于通过JDBC读取外部数据源数据的连接器.Apache SeaTunnel如何支持JDBC DB2 ...
- MPTCP(四):mptcpd编译及安装
mptcpd编译及安装 简介 mptcpd可以在应用层执行mptcp多路径管理的相关操作 可以在普通的TCP连接基础上应用MPTCP协议,我描述得不准确,请参考下面得链接自行理解 https://mp ...
- 最短路之Dijkstra
Dijkstra算法: Dijkstra是一种求解 非负权图 上单源最短路径的算法. 思路:将所有结点分为两个集合:已经确定最短路径的点(S)和未确定最短路长度的点集(T),开始时所有点都属于T 初始 ...
- java_GUI2
package GUi;import java.awt.*;public class GuI2 { public static void main(String[] args) { MyFrame n ...
- stm32f10x系列学习笔记(三)ADC
ADC_SampleTime 用途:在ADC通道配置(ADC_RegularChannelConfig)需要传输的参数. 含义:指两个采样阶段之间的延迟周期数,该参数会影响ADC在采样过程中的性能和准 ...
- Windows添加软件开机自启动
两种方式 1.添加快捷方式到开始菜单 打开我的电脑找到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 文件夹, 如果难找的话可 ...
- PowerShell 使用
Practice 常用命令 vim $PROFILE # 编辑配置文件 Get-ChildItem *> $null # 抛弃所有输出 whoami Remove-Item -Recurse - ...