Java 中流和数组之间的转换

培训教学 潘老师 7个月前 (09-24) 150 ℃ (0) 扫码查看

学习在 Java 中将流和数组相互转换。我们将学习基本类型和对象类型的转换。

String[] stringArray = {"a", "b", "c", "d", "e"};

// array -> stream
Stream<String> strStream = Arrays.stream(stringArray);

// stream -> array
String[] stringArray = stream.toArray(String[]::new);

请注意,Java Stream API为原始类型的流提供了以下专门的类。这些类支持许多有用的顺序和并行聚合操作,如sum()和average()。考虑使用这些类来存储原始类型的流,以更好地与其他API兼容。

  • IntStream – int值的流
  • LongStream – long值的流
  • DoubleStream – double值的流

1.将数组转换为流

1.1. 方法语法

将数组转换为元素流的主要方法是Arrays.stream()。它是一个重载的方法。

  • Stream<T> stream(T[] array):返回一个以指定数组为源的顺序流。
  • Stream<T> stream(T[] array, int start, int end):返回一个从索引位置start(包括)到end(不包括)的数组项的顺序流。

让我们通过以下示例来理解它的用法。

1.2. 原始数组转换为流

将int整数数组转换为IntStream的Java程序。

int[] primitiveArray = {0,1,2,3,4};
IntStream intStream = Arrays.stream(primitiveArray);

将int整数数组转换为整数对象流的Java程序。

int[] primitiveArray = {0,1,2,3,4};
Stream<Integer> integerStream = Arrays.stream(primitiveArray).boxed();

1.3. 对象数组转换为流

将对象数组转换为对象流的Java程序。我们可以将此方法应用于任何类型的对象,包括Java对象(String、Integer等)或自定义对象(User、Employee等)。

String[] stringArray = {"a", "b", "c", "d", "e"};
Stream<String> strStream = Arrays.stream(stringArray);

2. 将流转换为数组

2.1. 方法语法

将流转换为数组的主要方法是Stream.toArray()。它也是一个重载的方法。

  • Object[] toArray():返回包含指定流元素的数组。默认情况下,此方法的返回类型是Object[]。
  • T[] toArray(IntFunction<T[]> generator):使用提供的生成器函数返回包含此流元素的数组。生成器生成所需类型和提供的长度的新数组。

让我们通过一些示例来理解toArray()方法的用法。

2.2. 流转换为原始数组

从IntStream获取整数流的Java程序。

IntStream intStream = Arrays.stream(new int[]{1,2,3});
int[] primitiveArray = intStream.toArray();

将整数流转换为原始整数数组的Java程序。请注意,mapToInt()返回IntStream类型的实例。而IntStream.toArray()返回一个int[]。这是我们不使用任何生成器函数的原因。

Stream<Integer> integerStream = Arrays.stream(new Integer[]{1,2,3});
int[] primitiveArray = integerStream.mapToInt(i -> i).toArray();

2.3. 流转换为对象数组

将对象流转换为对象数组的Java程序。它适用于所有Java类和自定义对象。默认情况下,toArray()将返回一个Object[]。为了获取String[],我们使用了生成器函数String[]::new,它创建了一个String数组的实例。

Stream<String> strStream = Arrays.stream(new String[]{});
String[] stringArray = strStream.toArray(String[]::new);

3.结论

在这个简短的教程中,我们学会了将项目流转换为项目数组,包括原始值和复杂对象类型。我们学会了使用Arrays.stream()和Stream.toArray()方法以及它们的示例。

我们还了解到,通常建议使用专门的类,如IntStream,以获得原始值的流。这些类为原始类型提供自定义方法,以及许多有用的实用方法。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/teach/9244.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】