将数组转换为Stream流的两种方式--- Stream.of(数组名) 与 Arrays.stream(数组名)
Posted 小智RE0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将数组转换为Stream流的两种方式--- Stream.of(数组名) 与 Arrays.stream(数组名)相关的知识,希望对你有一定的参考价值。
将数组转换为流的方式:有两种;
- Stream.of(数组名)
- Arrays.stream(数组名)
对于不同的数据类型的数组,两种方式的返回值是不同的:
通过将数组转换为Stream流的两种方式;来遍历数组;查看它们的不同之处
首先看:Stream.of(数组名)
- 当数组的数据类型为基础类型时:
public class Demo {
public static void main(String[] args) {
//当数组的数据类型为基本数据类型时;
int[] array={1,2,3,5,6};
//使用Stream.of方式;
Stream.of(array).forEach(item -> System.out.print(item + " "));
}
}
结果:
[I@404b9385
查看源码;发现此时 Stream.of 的参数和返回值一致;在调用此方法时;传入的数据为array;即int[]
;所以返回值为Stream<int[]>
;得出的是数组地址.
public static<T> Stream<T> of(T t) {
return StreamSupport.stream(new Streams.StreamBuilderImpl<>(t), false);
}
- 当数组的数据类型为包装类时
public class Demo {
public static void main(String[] args) {
//当数组的数据类型为包装类时;
Integer[] array={1,2,3,5,6};
//使用Stream.of方式;
Stream.of(array).forEach(item -> System.out.print(item + " "));
}
}
结果:
1 2 3 5 6
查看源码:发现此时 Stream.of 的参数T... values
是可变长度的参数;本质上就是个数组;返回值为Stream<Integer>
;
输出的是数组中的元素.
public static<T> Stream<T> of(T... values) {
return Arrays.stream(values);
}
观察方法体;发现return Arrays.stream(values);
;它转到Arrays.stream()方法中了;方法参数为T[] array
;刚才的values传参;返回值为Stream<Integer>
;
输出的是数组中的元素.
public static <T> Stream<T> stream(T[] array) {
return stream(array, 0, array.length);
}
第二种方式Arrays.stream(数组名)
- 当数组的数据类型为基础类型时:
public class Demo {
public static void main(String[] args) {
//当数组的数据类型为基本数据类型时;
int[] array={1,2,3,5,6};
//使用Arrays.stream方式;
Arrays.stream(array).forEach(item -> System.out.print(item + " "));
}
}
结果:
1 2 3 5 6
查看源码: 此方法的参数为int[ ] array
返回值为IntStream
;
public static IntStream stream(int[] array) {
return stream(array, 0, array.length);
}
- 当数组的数据类型为包装类时
public class Demo0 {
public static void main(String[] args) {
//当数组的数据类型为包装类时;
Integer[] array={1,2,3,5,6};
//使用Arrays.stream方式;
Arrays.stream(array).forEach(item -> System.out.print(item + " "));
}
}
结果:
1 2 3 5 6
查看源码: 此时方法的参数T[] array
为数组;返回值为Stream<Integer>
;输出的是数组的元素
public static <T> Stream<T> stream(T[] array) {
return stream(array, 0, array.length);
}
以上是关于将数组转换为Stream流的两种方式--- Stream.of(数组名) 与 Arrays.stream(数组名)的主要内容,如果未能解决你的问题,请参考以下文章