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 抽象 ...
随机推荐
- C# 遇见System.Net.Http不兼容的解决方案
背景 假设我有一个项目A,调用B项目里面的HttpClient.A里面的System.Net.Http引用路径为(版本4.0.0.0) C:\Program Files (x86)\Reference ...
- ffmpeg和ffplay常用指令
FFmpeg 常见用法 1. 基本命令结构 ffmpeg [global_options] -i input_file [input_options] output_file [output_opti ...
- 【全】CSS动画大全之其他【移动盒子显示详情】
效果预览 代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...
- [APIO2019] 路灯 题解
LG5445 把询问 \(x,y\) 看作平面上的点 记当前时刻 \(t\),\(l\) 是与 \(i\) 连通的最左端,\(r\) 是与 \(i+1\) 连通的最右端,可以通过 set 维护断边找到 ...
- games101 作业1及作业2分析及解决 详解透视矩阵
games101 作业1及作业2分析及解决 去年的时候把games101的课程以及作业完成,但是整个过程比较粗略,也借助了不少外界的力量(doge),于是最近准备抽几天集中再把作业(1-7)过一遍,常 ...
- 处理报错 ResizeObserver loop completed with undelivered notifications.
// 处理报错 ResizeObserver loop completed with undelivered notifications. export const handlerResizeObse ...
- uni-app之camera组件-人脸拍摄
小程序录制视频:10-30秒:需要拍摄人脸,大声朗读数字(123456)这种. 1.camera组件 camera页面内嵌的区域相机组件.注意这不是点击后全屏打开的相机 camera只支持小程序使用: ...
- 【YashanDB知识库】共享集群YAC换IP
[标题]共享集群YAC换IP [需求分类]安装部署,配置变更 [关键字]安装部署,更换IP,运维,配置变更,高可用,YAC [需求描述]客户需要将已经部署的YAC集群更换IP,从测试网段切换生产网段 ...
- C#/.NET/.NET Core技术前沿周刊 | 第 4 期(2024年9.1-9.8)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- Hash表实践 —— 两数之和
目录 题目背景 解题思路 题目背景 这个题目用常规的双循环就可以完成. 但不是最优解.为什么? 看看他的步骤数: N =[3,2,4] 求结果为6的两个元素坐标如下, 1). 3+2 = 5 不等于 ...