我正在映射原始Stream
to a Stream<Integer>
然后将元素收集到List<Integer>
.
为什么我必须投射结果collect(Collectors.toList())
to List<Integer>
如果我的映射器 -.map(str -> ((String)str).length())
- 已经映射到Integer
?
My code:
List list = Arrays.asList("test", "test2");
List<Integer> lengths = (List<Integer>) list.stream()
.map(str -> ((String)str).length())
.collect(Collectors.toList());
如果我不使用原始List
,无需强制转换:
List<String> list = Arrays.asList("test", "test2");
List<Integer> lengths = list.stream()
.map(str -> str.length())
.collect(Collectors.toList());
Calling list.stream()
原始的List
产生一个原始的Stream
。呼叫map
在那Stream
并没有改变这一点Stream
到一个通用的Stream<Integer>
。它将其更改为另一个原始的Stream
。因此当你打电话时collect(Collectors.toList())
,你得到一个原始的List
并必须将其投射到(List<Integer>)
.
结论:不要使用原始类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)