鉴于片段代码:
Integer [] arrayIntegers_1 = {100,5,80,9,65,200};
Integer [] arrayIntegers_2 = {30,99,800};
Integer [] arrayIntegers_3 = {166,520,7};
Stream<Integer[]> streamOfArraysOfIntegers=Stream.of(arrayIntegers_1,arrayIntegers_2,arrayIntegers_3);
//OK, it is a Stream of arrays of Integers
Stream<Integer[]> streamOfArraysOfIntegers_1=Stream.of(arrayIntegers_1);
//Compilation fail in this line, Java cannot make a Stream of arrays of Integers or others objects from one (1) array
Stream<Integer> streamOfOfIntegers=Stream.of(arrayIntegers_1);
//From one (1) array Java makes a Stream of elements in this array, in this case it is a Stream of Integers
Run Code Online (Sandbox Code Playgroud)
在编译失败的行中,我等待Java使用一个Integers数组生成一个Integers数组Stream,但不是.在下一行中,我们可以看到Java从一个数组中生成一个整数流.
然而,由于集合没有发生,我们如何在下一个片段代码,最后一行中看到,
ArrayList<Integer> listOfIntegers=new ArrayList<>();
listOfIntegers.add(300); listOfIntegers.add(5); listOfIntegers.add(98); listOfIntegers.add(1); listOfIntegers.add(7);
ArrayList<Integer> listOfIntegers_1=new ArrayList<>();
listOfIntegers_1.add(999); listOfIntegers_1.add(3); listOfIntegers_1.add(85); listOfIntegers_1.add(561); listOfIntegers_1.add(42);
Stream<ArrayList<Integer>> streamOfListofIntegers=Stream.of(listOfIntegers,listOfIntegers_1);
Stream<ArrayList<Integer>> streamOfListofIntegers_1=Stream.of(listOfIntegers); //Stream of ArrayList of Integers with one (1) ArrayList of Integers
Run Code Online (Sandbox Code Playgroud)
我要感谢任何评论.
如果你想强制Stream.of建立一个Stream<Integer[]>,你可以使用:
Stream<Integer[]> streamOfArraysOfIntegers_1 =
Stream.<Integer[]>of(arrayIntegers_1);
Run Code Online (Sandbox Code Playgroud)
原因是Stream.of采用var-arg,这意味着当给定单个数组时,它会生成该数组的各个元素的流.
如果您实际传递多个数组,则不需要这样做:
Stream<Integer[]> streamOfArraysOfIntegers_1 =
Stream.of(arrayIntegers_1, arrayIntegers_2);
Run Code Online (Sandbox Code Playgroud)
将此行为与集合的行为进行比较是不相关的.这会影响数组,因为它们与var-args有关系(您可以将T[]参数作为参数传递给具有T...as参数的方法); 这不是收藏品的情况.
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |