Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4710 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  filtrer une collection

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

filtrer une collection

n°1949929
javaForEve​r
Posté le 13-12-2009 à 22:42:43  profilanswer
 

Pour filtrer une collection je trouve ce code partout :

Code :
  1. static void filter(Collection c)
  2. {
  3.   for (Iterator it = c.iterator() ; it.hasNext(); )
  4.     if (!cond(it.next()))
  5.       it.remove();
  6. }


mais je ne comprends pas pourquoi on retire (remove) un élément quand son suivant (next) ne remplit pas une condition...
si cet élément suivant (next) ne remplit pas la condition pourquoi on ne retire pas celui-là ?...
merci pour toute réponse

mood
Publicité
Posté le 13-12-2009 à 22:42:43  profilanswer
 

n°1949932
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-12-2009 à 22:53:15  profilanswer
 

it.next() te renvoie l'Object suivant de ton Iterator (qui n'a donc jamais été renvoyé). et it.remove() enlève le dernier Object renvoyé par it.next() (tu dois donc toujours appeler next() avant d'éventuellement appeler remove()).


Message édité par Harkonnen le 13-12-2009 à 22:53:27

---------------
J'ai un string dans l'array (Paris Hilton)
n°1950300
cbeyls
Hail to the King, Baby
Posté le 14-12-2009 à 21:58:53  profilanswer
 

C'est pourtant écrit dans la documentation de Iterator...

n°1950330
javaForEve​r
Posté le 15-12-2009 à 00:09:53  profilanswer
 

Harkonnen et cbeyls
merci de vos réponses,
ce code est dans les cours tel que j'ai copié et j'ai du mal avec !
est-ce que je peux le raisonner comme ça :  

Code :
  1. je crée le curseur;
  2. tant il y a un élément suivant;
  3. si ma condition n'est pas vrai;
  4. je vais au suivant;
  5. et je supprime celui sur lequel le curseur était (avant de passer sur le suivant !);


si cette interprétation est correcte je suis sauvée sinon le tablier va pas tarder à se rendre !!!

n°1950378
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-12-2009 à 09:21:54  profilanswer
 

Pourquoi tu passes au suivant si ta condition n'est pas vraie ? Si elle n'est pas vraie, alors tu supprimes l'élément précédemment lu et voila !
Le code que tu as posté au début est parfaitement correct, et parfaitement compréhensible. Regarde donc la doc de Iterator, elle est des plus limpides : http://java.sun.com/j2se/1.4.2/doc [...] rator.html


---------------
J'ai un string dans l'array (Paris Hilton)
n°1950532
javaForEve​r
Posté le 15-12-2009 à 14:40:39  profilanswer
 

merci de ta réponse,
 
la syntaxe que j'ai copié c'est dans les cours classique pour filtrer une collection, je l'interprétais mal et c'est pourquoi je ne comprenais pas : ça arrive souvent quand on est débutant  :pt1cable:
 
je n'avais pas compris que le curseur va d'abord sur l'élément et le teste se fait par la suite ....
 
et finalement je garde le tablier car j'ai fini par comprendre le truc !!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  filtrer une collection

 

Sujets relatifs
Filtrer du csv avec scrip PHPFiltrer les K plus grandes valeurs d'un vecteur
Exo prog concurrente et collection javaoccurences d'un objet dans une collection
Collection de collection vbarecupérer filtre par selection pour filtrer un etat
Collection a double dimension avec utilisation de la généricité[Access] Filtrer liste déroulante en fonction d'une autre
[VBA] Supprimer un if dans une collection de MailMergeFieldSite préconstruit : gestion d'une collection
Plus de sujets relatifs à : filtrer une collection


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)