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 抽象 ...
随机推荐
- PEP 703作者给出的一种no-GIL的实现——python3.9的nogil版本
PEP 703的内容是什么,意义又是什么呢? 可以说python的官方接受的no-GIL提议的PEP就是PEP 703给出的,如果GIL帧的从python中移除那么可以说对整个python生态圈将有着 ...
- Linux环境下配置vscode的C/C++编译环境
操作系统环境: Linux 配置vscode的C/C++编译环境需要安装插件: 本文的配置是指在linux下不使用vscode插件中自动配置,而是采用手动编写配置文件.主要原因是插件自动生成的C/C ...
- 最新版gym-0.26.2中Atari环境下各游戏在不同模式和困难度下的遍历
相关内容参看前文: 最新版gym-0.26.2下Atari环境的安装以及环境版本v0,v4,v5的说明 =========================================== gym中 ...
- 如何实现nvidia显卡的cuda的多kernel并发执行???
相关: CPU端多进程/多线程调用CUDA是否可以加速??? 参考: <CUDA C 编程指南>导读 https://developer.nvidia.com/blog/gpu-pro-t ...
- Spring Boot Admin对Springboot服务进行监控
1.背景 大纲 Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件.每个应用都认为是一个客户端,通过HTTP或者使用 Eureka注册到admin serv ...
- 【安装】SQL SERVER 彻底卸载清除
-----2024年8月6日09:40:13 -----bayaim, 以下内容纯属百度网络搜到,如有侵权请联系及时删除 SQL SERVER 如果卸载不干净,就会导致下一次安装失败,下面是卸载的步 ...
- 社区6月月报 | Apache DolphinScheduler重要修复和优化记录
各位热爱Apache DolphinScheduler的小伙伴们,社区6月月报更新啦!这里将记录Apache DolphinScheduler社区每月的重要更新,欢迎关注. 月度Merge Stars ...
- 【简单菊花图】Codeforce 1583Problem - B.md
1583Problem - B - Codeforces 题目大意:n个点的无根树 给出m个限制条件 (a,c,b)在a到b路径上不能存在c点,求任意一种可能的树的所有边 注意数据范围:1<m& ...
- 【线段树合并/树上差分】[P4556 [Vani有约会] 雨天的尾巴 /【模板】线段树合并
[线段树合并/树上差分]P4556 [Vani有约会] 雨天的尾巴 /[模板]线段树合并 思路 对 \(x,y,lca(u,v),fa_{lca(u,v)}\) 四个点进行树上差分,然后用线段树合并动 ...
- MPTCP(三) : 在内核中启用MPTCP相关模块
在内核中启用MPTCPv1相关的模块 1. 简介 本文所涉及的均为MPTCPv1版本的MPTCP,采用的内核版本为5.18.19 需要注意的是 虽然MPTCP官方文档中提到在5.6之后的linux内核 ...