Slu
quand le tab que je vx classer n est pas remplie (cad qu une partir du tableau est remplie avec null) la fonction Arrays.sort() me fait une erreur ....
que faire ???
thx @+
Slu
quand le tab que je vx classer n est pas remplie (cad qu une partir du tableau est remplie avec null) la fonction Arrays.sort() me fait une erreur ....
que faire ???
thx @+
personne ne connait la soluce ?
regarde ici: http://java.sun.com/j2se/1.4.2/docs/api/java/util/Arrays.html#sort(java.lang.Object[],%20java.util.Comparator)
il faut créer ton propre comparator, et l'utiliser pour comparer les éléments de ton tableau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Object[] o = new Object[]{null, new Object(), ...}; Comparator c = new Comparator(){ public int compare(Object o1, Object o2){ if(o1 == o2) return 0; if(o1 == null) return 1; if(o2 == null) return -1; // continue les tests en fonction de ce qui t'intéresse } public boolean equals(Object o){ if(this == o) return true; return false; } } Arrays.sort(o, c);
"Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"
Confucius, 448 av. J-C
justement je l ai fais ....
bug a :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 class Elem implements Comparable{ .... public Elem (String theNom, long theScore, long theDuree){ .... } public int compareTo(Object n){ if (this == null || n == null) return 1; if(Score < ((Elem)n).getScore()) return -1; if (Score == ((Elem)n).getScore()) return 0; return 1; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Arrays.sort(Tab);
Si this vaut null, on peut en déduire qu'auparavant on a fait null->compareTo(n).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public int compareTo(Object n){ if (this == null || n == null) return 1;
Conclusion : l'interface Comparable n'est pas utilisable quand il y a des null dans le tableau. Il faut utiliser Comparator qui permet d'avoir les deux objets comme des paramètres.
Envoyé par pk960
pffff il faut le savoir ca !!!
je vient de tester avec Comparator et ca a l air de marcher !!
merci tlm !
de toute façon, this ne peut jamais valoir null
c'est comme de dire que 1 égal 0
"Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"
Confucius, 448 av. J-C
c vrai ... mais c tout de meme un peu bizarre ... on ne peut alors utiliser l interface Comparable QUE lorsque le tableau est remplie ...Envoyé par Pill_S
utilise une liste si vraiment
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Random r = new Random(); List<Comparable> list = new ArrayList<Comparable>(100); for(int i=0; i<20; i++) list.add(r.nextInt()); // merci autoboxing de java 5 ;) Collections.sort(list); ...
"Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"
Confucius, 448 av. J-C
ah oui .... est ce que je peux limiter le nombre d elements dans une liste ?
pas directement.
mais en fonction du contenu (list.size()), tu peux facilement définir le moment où la liste est "pleine" et où tu dois arrêter d'ajouter des éléments.
"Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"
Confucius, 448 av. J-C
ok merci !Envoyé par Pill_S
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager