这两种流创建方法之间是否存在显着差异(在性能或最佳实践方面)?
int[] arr2 = {1,2,3,4,5,6};
Arrays.stream(arr2)
.map((in)->in*2)
.mapToObj((in) -> new Integer(in))
.collect(Collectors.toCollection(()-> new ArrayList<>()));
Arrays.stream(arr2)
.map(in->in*2)
.boxed()
.collect(Collectors.toCollection(()-> new ArrayList<>()));
EDIT
感谢 Stack Community 的回答,我可以添加一些插件来为新读者提出问题的完整性:
正如许多人指出的那样,.boxed()
IntStream 方法定义为:
@Override
public final Stream<Integer> boxed() {
return mapToObj(Integer::valueOf);
}
基本上重新定义了以下哪一项更好的问题:
.mapToObj(in -> new Integer(in))
or
.mapToObj(in -> Integer.valueOf(in))
Yes, boxed() uses Integer.valueOf可以检索一些Integer
实例来自cache.
所以你应该使用以下版本boxed()
(最好),或使用Integer.valueOf
代替new Integer()
。注意boxed()
实际上是简写mapToObj(Integer::valueOf).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)