Erreur lors de la conversion de liste de tableaux à double[]?
J'ai un ArrayList
appelé out
, et j'ai besoin de convertir un double[]
. Les exemples que j'ai trouvé en ligne ont dit deux choses:
Tout d'abord, essayez:
double[] d = new double[out.size()];
out.toArray(d);
Cependant, ce qui produit l'erreur (eclipse):
The method toArray(T[]) in the type List<Double> is not applicable for the arguments (double[]).
La deuxième solution que j'ai trouvé était sur StackOverflow, et a été:
double[] dx = Arrays.copyOf(out.toArray(), out.toArray().length, double[].class);
Cependant, ce qui produit l'erreur:
The method copyOf(U[], int, Class<? extends T[]>) in the type Arrays is not applicable for the arguments (Object[], int, Class<double[]>)
Quelle est la cause de ces erreurs, et comment puis-je convertir out
à double[]
sans la création de ces problèmes? out
, en effet, ne détient que des valeurs doubles.
Merci!
comment vous définissez
double[] est nécessaire
Euh... downvote, pourquoi? La recherche a été faite, plusieurs choses ont été tentées, et j'avais encore une question.
Je n'ai pas le droit de vote vers le haut ou vers le bas, mais un SSCCE ferait de cette question beaucoup mieux IMO.
out
? doit-il être double[] ou Double[] est acceptable?double[] est nécessaire
Euh... downvote, pourquoi? La recherche a été faite, plusieurs choses ont été tentées, et j'avais encore une question.
Je n'ai pas le droit de vote vers le haut ou vers le bas, mais un SSCCE ferait de cette question beaucoup mieux IMO.
OriginalL'auteur Aza | 2013-01-03
Vous devez vous connecter pour publier un commentaire.
Je pense que vous essayez de convertir
ArrayList
contenantDouble
objets primitifsdouble[]
Alternativement, Apache Commons a un
ArrayUtils
classe, qui possède une méthodetoPrimitive()
mais je pense qu'il est assez facile de le faire par vous-même, comme indiqué ci-dessus au lieu d'utiliser des bibliothèques externes.
for(int i = 0; i < ret.length; i++) ret[i] = out.get(i).doubleValue();
, pas besoin d'un itérateur. Merci!!!!Cela ne fonctionnera pas. i=i++ résultats dans j'ai toujours 0, mettez simplement i++; Aussi, explicite unboxing (.doubleValue()) est inutile.
incorporé les modifications suggérées. Merci
OriginalL'auteur Rahul
Avez-vous essayé
je.e à utiliser la classe
Double
et pas le type primitifdouble
Les messages d'erreur semblent indiquer que c'est le problème. Après tout, depuis
Double
est une classe wrapper autour de la primitive de typedouble
il s'agit essentiellement d'un type différent, et le compilateur va le traiter comme tel.dans ce cas, pourriez-vous redéfinir la liste
List<double>
ou vous pouvez utiliser ArrayUtils comme indiqué dans le lien pour convertir
Double[]
àdouble[]
OriginalL'auteur Karthik T
Génériques ne fonctionne pas avec les types primitifs c'est pourquoi vous obtenez une erreur. Utilisation
Double array
au lieu deprimitive double
. Essayez cette -org.apache.commons.lang
OriginalL'auteur Avinash T.