Java8如何将Array转换为Stream的实现代码
引言
在java8中,您可以使用Arrays.Stream或Stream.of将Array转换为Stream。
1.对象数组
对于对象数组,Arrays.stream和Stream.of都返回相同的输出。
publicstaticvoidmain(String[]args){
ObjectArrays();
}
privatestaticvoidObjectArrays(){
String[]array={"a","b","c","d","e"};
//Arrays.stream
Streamstream=Arrays.stream(array);
stream.forEach(x->System.out.println(x));
System.out.println("======");
//Stream.of
Streamstream1=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 publicstaticStream stream(T[]array){ returnstream(array,0,array.length); } //Stream publicstatic Stream of(T...values){ returnArrays.stream(values); }
2.基本数组
对于基本数组,Arrays.stream和Stream.of将返回不同的输出。
publicstaticvoidmain(String[]args){
PrimitiveArrays();
}
privatestaticvoidPrimitiveArrays(){
int[]intArray={1,2,3,4,5};
//1.Arrays.stream->IntStream
IntStreamstream=Arrays.stream(intArray);
stream.forEach(x->System.out.println(x));
System.out.println("======");
//2.Stream.of->Stream
Streamtemp=Stream.of(intArray);
//不能直接输出,需要先转换为IntStream
IntStreamintStream=temp.flatMapToInt(x->Arrays.stream(x));
intStream.forEach(x->System.out.println(x));
}
输出:
1
2
3
4
5
======
1
2
3
4
5
查看源码,
//Arrays
publicstaticIntStreamstream(int[]array){
returnstream(array,0,array.length);
}
//Stream
publicstaticStreamof(Tt){
returnStreamSupport.stream(newStreams.StreamBuilderImpl<>(t),false);
}
Whichone
- 对于对象数组,两者都调用相同的Arrays.stream方法
- 对于基本数组,我更喜欢Arrays.stream,因为它返回固定的大小IntStream,更容易操作。
所以,推荐使用Arrays.stream,不需要考虑是对象数组还是基本数组,直接返回对应的流对象,操作方便。
源码见:java-8-demo
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
热门推荐
10 新人红包祝福语简短精辟
11 幼师给毕业祝福语简短
12 生日高考祝福语妹妹简短
13 下飞机祝福语简短英文
14 元宵发客户祝福语简短
15 爸妈金婚文案祝福语简短
16 新郎朋友红包祝福语简短
17 虎年五一祝福语大全简短
18 出阁宴祝福语姐姐简短