IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Tri d'une liste par date


Sujet :

Java

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Points : 55
    Points
    55
    Par défaut Tri d'une liste par date
    Bonsoir,

    J'ai une liste d'objet Etudiant dont les champs sont : Nom, Prenom, Age, Date d'inscription.

    Je n'arrive par a trier cette liste par date d'inscription en utilisant la méthode Collections.sort.

    Pourriez-vous m'aider svp ?

    Merci par avance

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 554
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 554
    Points : 21 613
    Points
    21 613
    Par défaut
    Il faut créer une classe EtudiantComparator qui implémente Comparator<Etudiant>:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class EtudiantComparator implements Comparator<Etudiant> {
     
      public int compare(Etudiant e1, Etudiant e2) {
        // comparer e1 et e2
      }
     
    }
    Tu l'instancies quelque part :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Comparator<Etudiant> etudiantComparator = new EtudiantComparator();
    Et tu appelles la méthode sort() qui utilise les comparators :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Collections.sort(tesEtudiants, etudiantComparator);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Crée un Comparator
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class EtudiantComparator implements Comparator<Etudiant> {
    	public int compare(Etudiant etudiant1, Etudiant etudiant2) {
    		int result =  etudiant1.getDateInscription().compareTo(etudiant1.getDateInscription());
    		if(result == 0){
    			result = etudiant1.getNom().compareTo(etudiant1.getNom());
    		}
    		return result;
    	}
    }
    et pour le trie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List<Etudiant> etudiants = new ArrayList<Etudiant>();
    	// tu remplis la liste
    	Collections.sort(etudiants, new EtudiantComparator());
    Edit: owned

    A+.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Points : 321
    Points
    321
    Par défaut
    Il faut que ton object Etudiant implement l'interface Comparable<Etudiant>

    Dans cette interface tu dois avoir une méthode :
    int compareTo(Etudiant)

    Je t'invite à aller voir la doc : http://docs.oracle.com/javase/6/docs...omparable.html

    bien sur dans cette méthode tu compareras les dates des étudiants.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 554
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 554
    Points : 21 613
    Points
    21 613
    Par défaut
    Citation Envoyé par druzy Voir le message
    Il faut que ton object Etudiant implement l'interface Comparable<Etudiant>
    Discutable. On pourrait vouloir considérer que l'élément de comparaison naturel des étudiants, c'est plutôt leur nom ou leur âge.

    Un Comparator dédié aux dates d'inscription évite de compromettre cela.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Discutable. On pourrait vouloir considérer que l'élément de comparaison naturel des étudiants, c'est plutôt leur nom ou leur âge.

    Un Comparator dédié aux dates d'inscription évite de compromettre cela.
    +1
    La question de base sera : existe plus d'un critère de tri sur la collection ?
    S'il n'y en a qu'un, on peu implémenter directement le comparateur dans la classe
    Sinon, la solution thelvin est de loin la meilleure
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Trier une liste par date
    Par autre dans le forum C
    Réponses: 10
    Dernier message: 12/02/2012, 22h16
  2. mise à jour d'une liste par un popup
    Par Equus dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/02/2005, 11h21
  3. Multiplier une liste par 2
    Par mdswiuf dans le forum Prolog
    Réponses: 8
    Dernier message: 31/01/2005, 18h27
  4. [TRI] tri d'une list provenant de LabelValueBean
    Par Canou dans le forum Struts 1
    Réponses: 6
    Dernier message: 20/09/2004, 14h55
  5. tri d'une liste
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 09/01/2003, 18h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo