Convert a double array to Double ArrayList

前端 未结 5 1821
逝去的感伤
逝去的感伤 2020-12-06 00:25

When I try to convert a double array to a Double arrayList I got the following error:

Exception in thread \"main\" java.lang.ClassCastException: [D ca

相关标签:
5条回答
  • 2020-12-06 00:48

    Guava's version is even shorter:

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

    Reference:

    • Doubles.asList(double ...)

    Note: This is a varargs method. All varargs methods can be called using an array of the same type (but not of the corresponding boxed / unboxed type!!). These two calls are equivalent:

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

    Also, the Guava version doesn't do a full traverse, it's a live List view of the primitive array, converting primitives to Objects only when they are accessed.

    0 讨论(0)
  • 2020-12-06 00:53

    Using Java 8 Streams API this is achieved with

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

    If returning an ArrayList as an implementation is required then use

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

    This one-liner doesn't require any additional libraries.

    0 讨论(0)
  • 2020-12-06 01:08

    …or with 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>() );
          }
        } ) );
    
    0 讨论(0)
  • 2020-12-06 01:13

    Credit to bestsss for the comment which should be the answer:

    ArrayList<Double> firstValueList = new ArrayList<Double>();
    for(double d : firstValueArray) firstValueList.add(d);
    
    0 讨论(0)
  • 2020-12-06 01:14

    Alas, Arrays.asList(..) doesn't work with primitives. Apache commons-lang has

    Double[] doubleArray = ArrayUtils.toObject(durationValueArray);
    List<Double> list = Arrays.asList(doubleArray);
    
    0 讨论(0)
提交回复
热议问题