我發現使用 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 等)
添加回答
舉報
0/150
提交
取消