你能解释一下吗?为什么
Stream.of(l1, l2).flatMap((x)->x.stream()).forEach((x)->System.out.println(x));
Run Code Online (Sandbox Code Playgroud)
和
Stream.of(l1, l2).flatMap((x)->Stream.of(x)).forEach((x)->System.out.println(x));
Run Code Online (Sandbox Code Playgroud)
是不同的?
Stream没有Stream.of(Collection)方法.它确实有一种方法
static <T> Stream<T> of(T t)
Run Code Online (Sandbox Code Playgroud)
如果你传递Collection给这个方法,你将得到一个Stream<Collection>包含一个元素(Collection),而不是集合元素的流.
举个例子,试试这个:
List<Integer> l1 = Arrays.asList(1, 2, 3);
List<Integer> l2 = Arrays.asList(4, 5, 6);
Stream.of(l1, l2).flatMap((x)->x.stream()).forEach((x)->System.out.println(x));
Stream.of(l1, l2).flatMap((x)->Stream.of(x)).forEach((x)->System.out.println(x));
Run Code Online (Sandbox Code Playgroud)
第一个版本打印:
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)
第二个版本打印:
[1, 2, 3]
[4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
请注意,如果arr是Object[]你可以做Stream.of(arr)来获取数组元素的流.这是因为还有另一个版本of使用varargs.
static <T> Stream<T> of(T... values)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
725 次 |
| 最近记录: |