如何将 Java 8 中的流转换为数组
2021/5/10 22:31:21
本文主要是介绍如何将 Java 8 中的流转换为数组,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
问题
Java 8 中,什么是将流转换为数组的最简单的方式?
回答
回答 1
最简单地方式就是使用 toArray(IntFunction<A[]> generator)
方法,该方法也是 Java API 所建议使用的方法,详情请戳
String[] stringArray = stringStream.toArray(String[]::new);
该方法通过给定一个整数(即长度)作为参数,然后返回一个字符串数组(String[]
),你也可以写你自己的 IntFunction
:
Stream<String> stringStream = …; String[] stringArray = stringStream.toArray(size -> new String[size]);
其中 IntFunction<A[]> generator
的目的是将数组长度放到到一个新的数组中去。
实例:
Stream<String< stringStream = Stream.of("a", "b", "c"); String[] stringArray = stringStream.toArray(size -> new String[size]); Arrays.stream(stringArray).forEach(Ssytem.out::println);
打印的结果:
a b c
回答 2
假设你想从一个流 Stream<Integer>
得到一个 int
类型,且值为 1
~ 10
的数组,则可以使用 IntSteam
。
我们县创建一个带有 Stream.of
方法的 Stream
,并将其用 mapToInt
将 Stream<Integer>
转换为 IntStream
,接着再调用 IntStream
的 toArray
方法即可;
// 使用如下方法之一均可 Stream<Integer> stream = Stream.of(1,2,3,4,5,6,7,8,9,10); // Stream<Integer> stream = IntStream.rangeClosed(1, 10).boxed(); int[] array = stream.mapToInt(x -> x).toArray();
紧接着也是一样,只需要使用 IntStream
即可;
int[]array2 = IntStream.rangeClosed(1, 10).toArray();
回答 3
利用如下代码即可轻松将一个流转换为一个数组:
String[] myNewArray3 = myNewStream.toArray(String[]::new);
解释如下,首先我们创建一个包含三个字符串的字符串数组;
String[] stringList = {"Bachiri","Taoufiq","Abderrahman"};
接着我们为给定的数组创建一个流:
Stream<String> stringStream = Arrays.stream(stringList);
然后我们在这个流上就可以进行一系列操作了:
Stream<String> myNewStream = stringStream.map(s -> s.toUpperCase());
最后,我们使用就可以使用如下方法将其转换为数组:
- 传统方法(功能接口)
IntFunction<String[]> intFunction = new IntFunction<String[]>() { @Override public String[] apply(int value) { return new String[value]; } }; String[] myNewArray = myNewStream.toArray(intFunction);
- Lambda 表达式
String[] myNewArray2 = myNewStream.toArray(value -> new String[value]);
- API 方法
String[] myNewArray3 = myNewStream.toArray(String[]::new);
该方法其实是另一种 Lambda 表达式的写法,功能等价于第 2 种方法。
出处
文章翻译自 Stack Overflow:How to convert a Java 8 Stream to an Array?
这篇关于如何将 Java 8 中的流转换为数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略