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

  FORUM HardWare.fr
  Programmation
  Java

  Ordonner un Iterator

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ordonner un Iterator

n°2075135
deltamoins
Posté le 10-05-2011 à 21:33:48  profilanswer
 

Bonjour les amis,  
 
Je viens vous voir car ça fait bout de temps que j’essaie d'ordonner un iterator et je ne vois pas comment faire.
 
Alors j'ai crée une liste déroulante avec  JComboBox choice = new JComboBox();
Cette liste nommée 'choice' et va se retrouver dans un panel : jPanelTop.add(choice);

Code :
  1. // Remplie la liste déroulante avec mes noms de gènes qui se trouvent dans la classe Gene
  2.         Iterator <Gene> iterat = controleur.getGenome().getList().iterator(); //tranform the list into iterator
  3.         while (iterat.hasNext())
  4.         {
  5.           Gene temp = (Gene) iterat.next();
  6.           // on remplit la liste déroulante en mettant les noms, qui sont dans la méthode getName de la classe Gene
  7.                   choice.addItem(""+temp.getName());
  8.         }
  9. //Maintenant je veux ordonner cette liste mais d'après mes recherches il faut d'abord passer par un ArrayList pour faire le "sort()"
  10.  
  11.          ArrayList<Gene> jeVeuxOrdonner = new ArrayList<Gene>();
  12.        iterat = controleur.getGenome().getList().iterator();
  13.        
  14.         while (iterat.hasNext())
  15.                {
  16.           jeVeuxOrdonner.add(iterat.next());
  17.          
  18.         }
  19.         Collections.sort(jeVeuxOrdonner);


 
Mais ça ne marche pas. Une idée ?
Merci,


Message édité par deltamoins le 10-05-2011 à 23:11:48
mood
Publicité
Posté le 10-05-2011 à 21:33:48  profilanswer
 

n°2075147
mr simon
Posté le 10-05-2011 à 22:36:45  profilanswer
 

Ordonner un iterateur n'a pas de sens, ce qu'il faut c'est ordonner ta liste. En ce sens, ton deuxieme exemple devrait marcher.

 

Tu peux directement utiliser Collections.sort au lieu de creer un ArrayList inutil:
http://download.oracle.com/javase/ [...] il.List%29

Message cité 1 fois
Message édité par mr simon le 10-05-2011 à 22:36:55
n°2075154
deltamoins
Posté le 10-05-2011 à 23:05:39  profilanswer
 

mr simon a écrit :

Ordonner un iterateur n'a pas de sens, ce qu'il faut c'est ordonner ta liste. En ce sens, ton deuxieme exemple devrait marcher.  
 
Tu peux directement utiliser Collections.sort au lieu de creer un ArrayList inutil:
http://download.oracle.com/javase/ [...] il.List%29


 
Non ça ne marche pas j'avais déjà essayé.
Mon premier code est obligatoire ce n'est pas pour ordonner mais récupérer la liste de noms par iterator.
Ensuite le deuxième code c'est pour transformer mon iterator en arraylist pour pouvoir ordonner.
 
Je suis obligée de passer par ArrayList pour faire Collections.sort et ça ne marche pas.


Message édité par deltamoins le 10-05-2011 à 23:06:15
n°2075156
mr simon
Posté le 10-05-2011 à 23:18:45  profilanswer
 

Pour que Collections.sort fonctionne correctement, il faut que tes elements, "Gene", soit comparable, i.e implemente l'interface Comparable, est-ce bien le cas?
 
(cette remarque est aussi valable pour ArrayList.sort())
 
Comment veux tu ordonner ta liste ? je suppose que c'est par order alphabetique pour l'affiicher dans la combo box? dans ce cas:
1. Recuperer la liste
2. Ordonner la liste
3. Ajouter chaque element a la combo box via boucle for.
 
Pour 3, c'est plus lisible de faire quelque chose comme:

Code :
  1. for (Gene gene: aLisT) {
  2.  choice.addItem(gene.getName());
  3. }

n°2075216
deltamoins
Posté le 11-05-2011 à 11:06:30  profilanswer
 

Je suis dac pour le 3/ mais c'est le 2/ que je n'arrive pas à faire. La est le soucis.

n°2075244
masklinn
í dag viðrar vel til loftárása
Posté le 11-05-2011 à 11:58:01  profilanswer
 

deltamoins a écrit :

Je suis dac pour le 3/ mais c'est le 2/ que je n'arrive pas à faire. La est le soucis.


1. Quelle est la définition de Gene?
2. Pourquoi tu utilises des Iterator directement?
3. select is not broken

 
Code :
  1. import java.lang.Comparable;
  2.  
  3. class Gene implements Comparable<Gene> {
  4.    public String name;
  5.  
  6.    public Gene(final String name) {
  7.        this.name = name;
  8.    }
  9.    public int compareTo(Gene other) {
  10.        return this.name.compareTo(other.name);
  11.    }
  12.    public String toString() {
  13.        return "[Gene(" + this.name + " )]";
  14.    }
  15. }


Code :
  1. import java.util.*;
  2. public class Test {
  3.    public static Collection<Gene> getGenes() {
  4.        return new ArrayList<Gene>() {{
  5.            add(new Gene("Foo" ));
  6.            add(new Gene("Bar" ));
  7.            add(new Gene("Baz" ));
  8.            add(new Gene("Qux" ));
  9.            add(new Gene("Quux" ));
  10.            add(new Gene("Corge" ));
  11.            add(new Gene("Grault" ));
  12.        }};
  13.    }
  14.  
  15.    public static void main(String[] args) {
  16.        final List<Gene> sorted = new ArrayList<Gene>();
  17.        
  18.        sorted.addAll(getGenes());
  19.        
  20.        System.out.println(sorted);
  21.        Collections.sort(sorted);
  22.        System.out.println(sorted);
  23.    }
  24. }


> java Test
[[Gene(Foo)], [Gene(Bar)], [Gene(Baz)], [Gene(Qux)], [Gene(Quux)], [Gene(Corge)], [Gene(Grault)]]
[[Gene(Bar)], [Gene(Baz)], [Gene(Corge)], [Gene(Foo)], [Gene(Grault)], [Gene(Quux)], [Gene(Qux)]]


marche très bien chez moi.

mr simon a écrit :

Pour que Collections.sort fonctionne correctement, il faut que tes elements, "Gene", soit comparable, i.e implemente l'interface Comparable, est-ce bien le cas?


Tu peux aussi implémenter un Comparator<Gene> et filer ça en 2e argument à Collections.sort, genre:

Code :
  1. Collections.sort(genes, new Comparator<Gene>() {
  2.    public int compare(Gene g1, Gene g2) {
  3.        return g1.name.compareTo(g2.name);
  4.    }
  5. });


et dans ce cas pas besoin que la classe implémente Comparable.


Message édité par masklinn le 11-05-2011 à 12:04:36

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2076723
deltamoins
Posté le 18-05-2011 à 00:47:56  profilanswer
 

Merci Masklinn et mr simon.


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

  Ordonner un Iterator

 

Sujets relatifs
Pourquoi utiliser un iterator au lieu d'un for ? [résolu]Utiliser un iterator sur un vector à 2 dimensions - position
problème avec itérator c++"Fusionner" deux Itératorss dans une Jsp
conversion iterator const_iteratorOrdonner un calcul de requetes SQL
ostream_iteratorstl iterator
iterator sur un taleau Citerator_traits et pointeur
Plus de sujets relatifs à : Ordonner un Iterator


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR