java8 arrays.stream_Java8 获取一个Stream,选择 Arrays.stream() 还是 Stream.of() ?

在网上搜了一下。

对于对象数组/列表,两个方法都调用了 Arrays.stream :

Integer[] array = { 1, 2, 3, 4, 5 };

Stream.of(array)// return Stream

.forEach(System.out::println); // prints 1, 2, 3, ...

Integer[] array = { 1, 2, 3, 4, 5 };

Arrays.stream(array)// return Stream

.forEach(System.out::println); // prints 1, 2, 3, ...

对于原始数据的数组/列表,两个方法会返回不同的结果:

int[] array = { 1, 2, 3, 4, 5 };

Arrays.stream(array)// returns IntStream

.forEach(System.out::println); // prints 1, 2, 3, ...

int[] array = { 1, 2, 3, 4, 5 };

Stream.of(array)// returns Stream

.forEach(System.out::println); // prints [I@27d6c5e0

然而,实现相同结果的时候,我发现 Stream.of 的运行速度更快一些,求大佬解释一下,并说明你平时选用哪个进行转换。示例如下,目的是将一个String[] 转为 Integer[]:

@Test

public void streamStringsToIntegers() {

String str = "1,2,3,8,9,125,12";

System.out.println("*****************************************");

System.out.println(System.currentTimeMillis());

System.out.println(Arrays.toString(Arrays.stream(str.split(",")).map(Integer::parseInt).toArray(Integer[]::new)));

System.out.println(System.currentTimeMillis());

System.out.println("+++++++++++++++++++++++++++++++++++++++++");

System.out.println(System.currentTimeMillis());

System.out.println(Arrays.toString(Stream.of(str.split(",")).map(Integer::parseInt).toArray(Integer[]::new)));

System.out.println(System.currentTimeMillis());

}

结果,明显后者(Stream.of)所需时间更短:

*****************************************

1548322968304

[1, 2, 3, 8, 9, 125, 12]

1548322968314

+++++++++++++++++++++++++++++++++++++++++

1548322968314

[1, 2, 3, 8, 9, 125, 12]

1548322968316

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值