为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Java Stream 创建对象数组

使用 Java Stream 创建对象数组

潇潇雨雨 2021-12-10 15:13:06
我发现使用 Java Streams 创建大型对象数组是可行的,如下所示:double[] doubleArray = {array of double};DoubleWrapper[] wrapperArray = new DoubleWrapper[doubleArray.length;IntStream     .range(0, doubleArray.length)     .forEach(index -> wrapperArray.setElement(index, myArray[index]));有用。但是我读到依赖“副作用”是不好的做法,但应该得到我想要的结果作为流的输出。我想从对象中提取数组时我越来越接近这个了:DoubleWrapper[] wrapperArray = {array of DoubleWrapper}double[] mArray = IntStream                    .range(0, divisor.size())                    .mapToDouble(index ->  wrapperArray.getElement(index))                    .toArray();有没有更好的方法来使用流来做到这一点?如果没有,我应该回到使用“for 循环”吗?
查看完整描述

1 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

当然。不是循环遍历索引,然后通过索引获取数组元素,您应该直接遍历数组元素,将数组转换为流:


double[] mArray = Stream.of(wrapperArray)

   .mapToDouble(DoubleWrapper::getValue)

   .toArray();

或者


DoubleWrapper[] wrapperArray = DoubleStream.of(doubleArray)

    .mapToObj(DoubleWrapper::new)

    .toArray(length -> new DoubleWrapper[length])

但最大的错误可能是拥有自己的 DoubleWrapper 类而不是使用 java.lang.Double,并且使用对象数组而不是更高级别的集合(如 Lists、Sets 等)


查看完整回答
反对 回复 2021-12-10
  • 1 回答
  • 0 关注
  • 502 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号