Java8如何将Array转换为Stream的实现代码
作者:火炎焱 发布时间:2022-09-15 06:41:31
标签:Java8,Array,Stream
引言
在 java8 中,您可以使用 Arrays.Stream 或 Stream.of 将 Array 转换为 Stream。
1. 对象数组
对于对象数组,Arrays.stream 和 Stream.of 都返回相同的输出。
public static void main(String[] args) {
ObjectArrays();
}
private static void ObjectArrays() {
String[] array = {"a", "b", "c", "d", "e"};
//Arrays.stream
Stream<String> stream = Arrays.stream(array);
stream.forEach(x-> System.out.println(x));
System.out.println("======");
//Stream.of
Stream<String> stream1 = Stream.of(array);
stream1.forEach(x-> System.out.println(x));
}
输出:
a
b
c
d
e
======
a
b
c
d
e
查看 JDK 源码,对于对象数组,Stream.of 内部调用了 Arrays.stream 方法。
// Arrays
public static <T> Stream<T> stream(T[] array) {
return stream(array, 0, array.length);
}
// Stream
public static<T> Stream<T> of(T... values) {
return Arrays.stream(values);
}
2. 基本数组
对于基本数组,Arrays.stream 和 Stream.of 将返回不同的输出。
public static void main(String[] args) {
PrimitiveArrays();
}
private static void PrimitiveArrays() {
int[] intArray = {1, 2, 3, 4, 5};
// 1. Arrays.stream -> IntStream
IntStream stream = Arrays.stream(intArray);
stream.forEach(x->System.out.println(x));
System.out.println("======");
// 2. Stream.of -> Stream<int[]>
Stream<int[]> temp = Stream.of(intArray);
// 不能直接输出,需要先转换为 IntStream
IntStream intStream = temp.flatMapToInt(x -> Arrays.stream(x));
intStream.forEach(x-> System.out.println(x));
}
输出:
1
2
3
4
5
======
1
2
3
4
5
查看源码,
// Arrays
public static IntStream stream(int[] array) {
return stream(array, 0, array.length);
}
// Stream
public static<T> Stream<T> of(T t) {
return StreamSupport.stream(new Streams.StreamBuilderImpl<>(t), false);
}
Which one
对于对象数组,两者都调用相同的 Arrays.stream 方法
对于基本数组,我更喜欢 Arrays.stream,因为它返回固定的大小 IntStream,更容易操作。
所以,推荐使用 Arrays.stream,不需要考虑是对象数组还是基本数组,直接返回对应的流对象,操作方便。
源码见:java-8-demo
来源:https://segmentfault.com/a/1190000020247886


猜你喜欢
- 先介绍下一些基本定义串行通信:通过的是PLC上的串行口RS232/RS422/485口,上位机链接系统 Hostlink系统是对于FA系统一
- 首先,我们看看Map架构。如上图:Map 是映射接口,Map中存储的内容是键值对(key-value)。AbstractMap 是继承于Ma
- 1.先导入以下两个jar包2.jsp文件表单必须是post提交,编码必须是multipart/form-data 文件上传文本框必须起名。3
- spring security中遇到的问题1.An Authentication object was not found in the S
- 首先分析下游戏界面内的元素:无限滚动的背景图, 可以操作的主角,主角的 * , 主角的血量,两种怪物(敌机),一个boss, boss的 * 效
- Q1: Object类型包含哪些方法?A1: Object类型共包含6个方法,Equals, GetHashCode, ToString,
- 一:什么是classpath?classpath指的就是 *.java文件,资源文件等编译后存放的位置,对于maven项目就是指 targe
- 本文实例为大家分享了java实现简单扫雷游戏的具体代码,供大家参考,具体内容如下package com.test.swing;import
- 当我们在项目中登录使用验证码的时候,不妨试试Kaptcha生成验证码,非常简单1、首先,我们在pom.xml文件中引入kaptcha的mav
- 下文笔者讲述StringTokenizer对象的简介说明,如下所示StringTokenizer的简介Java StringTokenize
- 简介:本篇博客主要包括recyclerview添加多种布局以及添加头布局和尾布局,还有item点击事件思路:主要重写Recyclerview
- 本文实例讲述了C#纹理画刷TextureBrush用法。分享给大家供大家参考。具体如下:using System;using System.
- java jpa自定义sql语句本篇只是为了再次记录自己又学习了jpa的使用,框架原生的通过解析方法名多适用于单表操作,自定义的sql查询则
- 网络中数据传输经常是xml或者json,现在做的一个项目之前调其他系统接口都是返回的xml格式,刚刚遇到一个返回json格式数据的接口,通过
- 本文介绍了Android串口通信封装之OkUSB的示例代码,分享给大家。具体如下:Github传送门:OkUSBOkUSB一个简洁的Andr
- 本文汇总了android 8种对话框(Dialog)使用方法,分享给大家供大家参考,具体内容如下1.写在前面Android提供了丰富的Dia
- 相关知识:Java中三种简单注解介绍和代码实例一、作用用 @Deprecated注解的程序元素,不鼓励程序员使用这样的元素,通常是因为它很危
- maven打包时候修改包名称带上git版本号和打包时间使用 maven 插件 git-commit-id-plugin 可以获取项目的git
- 具体代码如下所示:/// <summary> /// 启用事务提交多条带参数的SQL语句 /// </summary>
- Java * 。具体有如下四步骤:通过实现 InvocationHandler 接口创建自己的调用处理器;通过为 Proxy 类指定 C