簡體   English   中英

將double數組轉換為Double ArrayList

[英]Convert a double array to Double ArrayList

當我嘗試將雙數組轉換為Double arrayList時,我收到以下錯誤:

線程“main”中的異常java.lang.ClassCastException:[D不能強制轉換為java.lang.Double

以下是我的代碼。

double [] firstValueArray ;

ArrayList <Double> firstValueList = new ArrayList (Arrays.asList(firstValueArray));

我將此列表與另一個列表進行比較,並將結果分配給另一個雙變量。

請讓我知道此錯誤的原因。

唉, Arrays.asList(..)不適用於基元。 Apache commons-lang有

Double[] doubleArray = ArrayUtils.toObject(durationValueArray);
List<Double> list = Arrays.asList(doubleArray);

番石榴的版本更短:

List<Double> list = Doubles.asList(doubleArray);

參考:

注意:這是一種varargs方法。 可以使用相同類型的數組(但不是相應的盒裝/非盒裝類型!!)調用所有varargs方法。 這兩個電話是等價的:

Doubles.asList(new double[]{1d,2d});
Doubles.asList(1d,2d);

此外,Guava版本不進行完整遍歷,它是原始數組的實時List視圖,僅在訪問它們時將原語轉換為Objects。

使用Java 8 Streams API可以實現

DoubleStream.of(doublesArray).boxed().collect(Collectors.toList());

如果需要返回ArrayList作為實現,則使用

DoubleStream.of(doublesArray).boxed().collect(Collectors.toCollection(ArrayList::new));

這種單行程不需要任何額外的庫。

感謝評論的最佳人選應該是答案:

ArrayList<Double> firstValueList = new ArrayList<Double>();
for(double d : firstValueArray) firstValueList.add(d);

...或Java 1.7:

double[] firstValueArray = new double[] {1.0, 2.0, 3.0};

ArrayList<Double> list = DoubleStream.of( firstValueArray ).boxed().collect(
    Collectors.toCollection( new Supplier<ArrayList<Double>>() {
      public ArrayList<Double> get() {
        return( new ArrayList<Double>() );
      }
    } ) );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM