90 votes

Comment caster à partir de la liste<Double> doubler[] en Java ?

J'ai une variable comme ça :

 List<Double> frameList =  new ArrayList<Double>();

/* Double elements has added to frameList */

Comment puis-je faire en sorte qu'une nouvelle variable ait un type de double[] de cette variable en Java avec des performances élevées ?

124voto

ZouZou Points 23600

Avec , vous pouvez le faire de cette façon.

 double[] arr = frameList.stream().mapToDouble(Double::doubleValue).toArray(); //via method reference
double[] arr = frameList.stream().mapToDouble(d -> d).toArray(); //identity function, Java unboxes automatically to get the double value

Ce qu'il fait c'est :

  • obtenir le Stream<Double> de la liste
  • mapper chaque instance double à sa valeur primitive, ce qui donne un DoubleStream
  • appelez toArray() pour obtenir le tableau.

10voto

Praveen Points 327

Selon ta question,

 List<Double> frameList =  new ArrayList<Double>();
  1. Vous devez d'abord convertir List<Double> en Double[] en utilisant

     Double[] array = frameList.toArray(new Double[frameList.size()]);
    
  2. Ensuite, vous pouvez convertir Double[] en double[] utilisant

     double[] doubleArray = ArrayUtils.toPrimitive(array);
    

Vous pouvez l'utiliser directement en une seule ligne :

 double[] array = ArrayUtils.toPrimitive(frameList.toArray(new Double[frameList.size()]));

8voto

Marcelo Points 6708

Vous pouvez utiliser la ArrayUtils de commons-lang pour obtenir un double[] partir d'un Double[] .

 Double[] ds = frameList.toArray(new Double[frameList.size()]);
...
double[] d = ArrayUtils.toPrimitive(ds);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X