Lo

Grade : Expert
Inscrit le: 26 Dec 2007, 17:33
|
| Ecrit le: 19 Jan 2009, 18:03 Message non corrigé | |
|
Poster ici si vous rencontrer des bugs.
En wai, la nouvelle, j'ai oublier de faire gaffe à une chose :
Lorsqu'on supprime un objet dans une liste, le Java, décale tout, histoire de pas avoir une valeur nulle dans la liste, et la taille de la liste change!
Voilà pourquoi ça bugger, je voulais supprimer tout les points non sélectionnés, et en fait, ça me les effacer pas tous, tout simplement parce que la taille de la liste change, vu que ça décale tout.
Donc, bah, j'ai du faire comme ceci :
public void removePoints() {
System.out.println("Effacer");
int size = points.size(), j = 0;
for (int i = 0; i < size; i++) {
Point2D p = points.get(j);
if(p.isSelected())
points.remove(j);
else
j++;
}
System.out.println("Après effaçage");
afficherPoints ();
}
Purée, au début, je me dis le langage bug c'est pas possible, mais non en faîtes, c'est parce que il décale tout les éléments mais normalement une liste accepte les doublons mais y décale tout quand même, tin, j'ai cherché pendant longtemps hors que c'était bêtement ça, rah j'ai la rage.
Par contre j'ai constaté un bug avec la méthode binarySearch de la classe Collections qui ne marche pas très bien, mieux vaut utilisé indexOf.
Mais indexOf bug quand la liste est vide, donc, moi j'utilise ma propre méthode, et binaryShearch, il faut que la liste soit triée pour pouvoir l'utiliser.
________ Parce qu'on ne peut s'exprimer que par nos créations. ^^
|
|
Aquaphobe

Grade : Nouveau venu
Inscrit le: 03 Juillet 2009, 09:13
|
| Ecrit le: 03 Juillet 2009, 09:43 Message non corrigé | |
|
Hello,
2 choses à dire :
Pour ta méthode, tu aurais pu l'écrire autrement.
Pour le parcours de listes (et de n'importe quel type implémentant l'interface Iterable), l'iterator est ton ami :
public void removePoints() {
System.out.println("Effacer");
Iterator<Point2D> iterator = points.iterator();
while (iterator.hasNext()) {
Point2D p = iterator.next();
if (p.isSelected()) {
iterator.remove();
}
}
System.out.println("Après effaçage");
afficherPoints();
}
Plus besoin d'index, de variables inutiles. Et c'est beaucoup plus clair.
2ème chose, je ne peux pas laisser dire que binarySearch ou indexOf bug. C'est juste que tu t'en sers mal.
Une des chose primordiales en java, c'est la javadoc. Tous les cas d'utilisation de telle ou telle méthodes y sont décrits à merveille.
Pour dire que ça "bug", je doute que tu l'ai lue.
Bonne chance pour la suite ! ;)
Aqua
|
|
Lo

Grade : Expert
Inscrit le: 26 Dec 2007, 17:33
|
| Ecrit le: 03 Juillet 2009, 12:38 Message non corrigé | |
|
Mmmh, je pense que j'ai du oublier de trier la liste, mais bon c'est parce que j'avais une liste de Points, et que parfois il ne me trouvait pas le Point dans la liste lorsque je voulais le sélectionné.
Halala j'oublie tjs de trier les listes. (Je ne sais plus si je l'avais triée et si j'avais aussi eu ce bug avant.)
________ Parce qu'on ne peut s'exprimer que par nos créations. ^^
|
|