Convertir un tableau double pour un float array
J'ai un double[][] tableau, et je veux obtenir une ligne dans un float tableau []. Casting n'a pas travaillé à la première, j'ai donc cherché quelque chose de différent.
J'ai trouvé ici, dans stackoverflow une solution élégante pour convertir Object[] String[], qui serait également travailler si je ont été de la conversion de l'Objet[] pour float[].
Donc: est-il un moyen élégant de conversion de double[] pour float[], double ou[] de l'Objet[] si je peux utiliser le code à l'autre post?
Je vais vous donner un exemple de code de ce que je fais, même je pense qu'il n'est pas nécessaire de le modifier:
double[][] datos = serie.toArray();
double[][] testArray = {{1.0, 2.0, 3.0}, {4.0, 5.0, 6.0}, {7.0, 8.0, 9.0}};
double[] doubleArray = Arrays.copyOf(testArray[1], testArray[1].length);
//This would be great but doesn't exist:
//float[] floatArray = Arrays.copyOf(doubleArray, doubleArray.length, float[].class);
OriginalL'auteur Roman Rdgz | 2011-09-22
Vous devez vous connecter pour publier un commentaire.
Pas, coulée dans le tableau ne fonctionne pas. Vous avez besoin de convertir explicitement chaque élément:
ne fonctionne pas: floatArray est nulle après la boucle!
Ce n'est pas possible - vous avez certainement fait une erreur dans votre code, mais nous ne pouvons pas dire ce que c'est. Il est absolument aucun moyen à la fin du code que j'ai fourni,
floatArray
est null.Ok oublier, le code est OK, j'ai eu un problème différent. Merci! 🙂
OriginalL'auteur Jon Skeet
Ici est une fonction que vous pourriez placer dans une bibliothèque et d'utiliser encore et encore:
J'ai révisé mon commentaire, voir ci-dessus :/
N'ai pas vraiment essayé, mais c'est la même réponse de Jon Skeet a donné, mais encapsulé inyo une fonction, donc je suppose que je vais obtenir null float[] trop
Ok oublier, le code est OK, j'ai eu un problème différent. Merci! 🙂
L'Utilisation Du Système.arrayCopy
OriginalL'auteur NPE
De référence pour l'avenir; cela peut aussi être fait un peu plus concise en utilisant la Goyave, comme ceci:
Nope, je n'ai pas testé le temps d'exécution. Ce n'est probablement pas aussi rapide que l'écriture d'une boucle, mais si vous ne faites pas cela très souvent et/ou pour les grandes listes-il encore de ne pas prendre une notable quantité de temps.
ok, donc je l'ai testé. c'est très exactement 9 fois plus lent sur ma machine. pastebin.com/Rh5eWY7q à mon humble avis ce ne doit pas être utilisé à jamais. c'est juste une ligne de moins, plus lent, plus complexe et nécessite un énorme dépendance.
ps résultats des tests ici imgur.com/SCRwTrT
Merci de prendre l'effort de test de performance. Je suis d'accord que c'est exagéré pour inclure la Goyave juste pour cela, mais si vous l'utilisez déjà, je pense que c'est plus clair que celui de la boucle. Pas tellement parce qu'il permet d'économiser deux lignes (pas un), mais parce qu'il enregistre la boucle elle-même. C'est subjectif bien sûr, mais dans mon esprit, une boucle est généralement une indication de la complexité, quelque chose qui mérite une attention particulière lors de la lecture du code. C'est pourquoi je préfère le bout de code que j'ai posté. Comme je l'ai expliqué, je vais généralement pas vraiment à la performance d'une telle fonction, et je ne suis pas d'accord c'est plus complexe qu'une boucle.
OriginalL'auteur Pieter-Paul Kramer
J'ai créé cette catégorie pour mon usage personnel, mais je pense qu'il peut vous aider avec votre problème.
Il peut être utilisé comme ceci:
OriginalL'auteur emd
Avec Kotlin vous pouvez essayer quelque chose comme ceci:
ou
OriginalL'auteur Antonis Radz
Une autre solution à l'aide de 'forEach' méthode en une seule ligne:
OriginalL'auteur Jawensi