我有一个字符串列表:
Listlist = Arrays.asList("a1,a2", "b1,b2");
然后转换列表中的所有内容,如:"a1","a2","b1","b2"
写道:
Listss1 = list.stream() .flatMap(s -> Stream.of(s.split(","))) .collect(Collectors.toList());
但我有一个错误:"类型不匹配:无法转换List
为List
".我把问题改成了这个:
Listss2 = list.stream() .flatMap(s -> Arrays.stream(s.split(","))) .collect(Collectors.toList());
Eclipse Neon表明不同之处在于flatMap
返回类型.首先flatMap
返回List
第二个返回a List
.
但两者Stream.of()
并Arrays.stream()
返回
(Eclipse的建议,他们都回报Stream
).
再次,Stream.of()
内部使用(并返回输出)Arrays.stream()
.那么,第一种情况又是怎么回事呢?
错误508834,感谢@Tunaki
注意方法签名:
//Stream.ofStream of(T... values) //Arrays.stream Stream stream(T[] array)
现在,因为Arrays.stream
很明显,具有类型数组的调用T
将返回a Stream
.但它Stream.of
应该返回Stream
还是Stream
?即什么是varags的类型; 你传递你的数组是第一个参数(所以varargs是一个数组数组)还是你传递你的数组作为所有参数?
那是你的问题.