J'ai une liste que j'ai trié et je veux convertir le List
en Color[]
Une raison pour laquelle j'ai ces couleurs dans une liste est que je pourrais mettre en œuvre ma propre comparaison commander les couleurs dans la liste. Il contient uniquement des couleurs. Maintenant que je peux les trier, je veux transformer la liste en Color[]
. Jusqu'ici j'ai essayé différentes manières de le convertir mais j'ai échoué. La raison pour laquelle j'utilise une liste est parce que je trie les couleurs en fonction des coordonnées qui correspondent à la couleur actuelle. Voici plus d'arrière-plan:Comment faire pour convertir l'objet [] en couleur [] Java
Voici mes tentatives:
SortColors s = new SortColors();
s.x = roi.x;
s.y = roi.y;
s.color = colorToAdd;
Voici sa classe de commande:
public class SortColors implements Comparable<SortColors> {
public int x, y;
public Color color;
@Override
public int compareTo(SortColors other) {
if (null==other) throw new NullPointerException();
// implement the logic, like:
// this will compare X, unless difference in Y is more than EG 10
return Math.abs(y - other.y) > 10 ? y - other.y : x - other.x;
}
@Override
public String toString(){
/* String result = "";
result = "x " + x + ", y " + y + "\n" + color.toString() + "\n";
System.out.println(result);
*/
return color.toString();
}
}
1. Le casting a échoué sur celui-ci:
Color [] sortedColors = (Color[]) colorsToSort.toArray(); //List to a Object Array
En voici une autre:
(Ce fut m'a donné une exception ArrayStore)
Object [] sortedColors = colorsToSort.toArray(); //List to an Object Array
Color[] sorted = Arrays.copyOf(sortedColors, sortedColors.length, Color[].class);
J'ai aussi essayé cela, mais obtenir le ArrayStoredException:
Color [] sortedColors = colorsToSort.toArray(new Color[54]); //List to a Color Array
duplicable de [Comment faire pour convertir un tableau d'objets en tableau de chaînes en Java] (https://stackoverflow.com/questions/1018750/how-to-convert-object-array-to-string-array-in-java) – Li357
Si vous regardez la réponse, cela ne fonctionne qu'avec une chaîne []. J'ai essayé cette réponse et ça ne fonctionnait pas. @AndrewLi – ProgrammingCuber
"* La seule raison pour laquelle j'ai ces couleurs dans une liste est que j'ai pu mettre en place ma propre comparaison pour classer les couleurs dans la liste. *" Vous pouvez aussi trier des tableaux avec votre propre comparateur Classe java.util.Arrays Quoi qu'il en soit, vous pouvez retourner du tableau List de type spécifique avec 'list.toArray (new Color [0]);'. – Pshemo