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

Collection et Stream Java Discussion :

[Collection] Tris sur plusieurs champs


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 66
    Points : 53
    Points
    53
    Par défaut [Collection] Tris sur plusieurs champs
    Bonjour, je dispose d'un objet comporant plusieurs champs string.

    J'ai également une ArrayList avec une liste d'objets du même type.

    J'aimerais pouvoir trier l'ArrayList suivant un champ mais pas forcement le même.

    Ex j'ai un champ nom et prenom, j'aimerais pouvoir trier la liste suivant le nom ou le prenom.

    Alors j'ai vu que l'on pouvait implementer compareTo en mettant l'objet comparable, mais comment en faire plusieurs ?

    ou y a t'il une autre maniere.

    Merci

  2. #2
    Membre confirmé Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Points : 605
    Points
    605
    Par défaut
    il faut que tu implémente la méthode compareTo de l'objet que tu mets dans ton arraylist . Tu dois bien spécifier que si le nom est equals, tu regardes le prénom... afin de donner un ordre logique a tes objets
    et ensuite tu pourras utiliser la méthode sort() de l'arraylist
    a+
    Ni Dieu, ni maître, mais des frites bordel!

  3. #3
    Membre confirmé Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Points : 605
    Points
    605
    Par défaut Re: Tri de collection sur plusieurs champs
    Citation Envoyé par partyboy
    comment en faire plusieurs ?


    si tu souhaite comparer deux objet différents (ie 2 instance de classe différentes), il faut que dans le compareTo tu dois utiliser la méthode instanceOf permettant de savoir si un objet est de type ta classe et de donner un ordre selon tes types
    Ni Dieu, ni maître, mais des frites bordel!

  4. #4
    NGY
    NGY est déconnecté
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 137
    Points : 164
    Points
    164
    Par défaut
    Tu peux aussi créer plusieurs Comparator et utiliser la méthode Collections.sort(taCollection, compParNom);

    Par exemple :
    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
    19
    20
      private static Comparator compParNom = new Comparator() {
        public int compare(Object o1, Object o2) {
          if (o1 == null || o2 == null) {
            return 0;
          }
          TaClasse obj1 = (TaClasse) o1;
          TaClasse obj2 = (TaClasse) o2;
          return ( obj1.getNom().compareTo(obj2.getNom() );
        }
      };
      private static Comparator compParPrenom = new Comparator() {
        public int compare(Object o1, Object o2) {
          if (o1 == null || o2 == null) {
            return 0;
          }
          TaClasse obj1 = (TaClasse) o1;
          TaClasse obj2 = (TaClasse) o2;
          return ( obj1.getPrenom().compareTo(obj2.getPrenom() );
        }
      };

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 66
    Points : 53
    Points
    53
    Par défaut
    Merci pour vos réponses,

    j'ai effectivement utilisé plusieurs comparator et ca fonctionne nickel !

    merci pour vos réponses

    bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tri sur plusieurs champs d'un tableau contenant des objets
    Par swampsnake dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/07/2011, 13h14
  2. [AC-2003] Tri sur plusieurs champs dans zone de liste
    Par Orakle dans le forum IHM
    Réponses: 3
    Dernier message: 18/06/2009, 09h12
  3. [SQL SERVER ] Tri sur plusieurs champs
    Par fantomchris dans le forum Langage SQL
    Réponses: 6
    Dernier message: 27/07/2006, 17h59
  4. Comment faire un Tri sur plusieurs champs
    Par guile153 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 24/07/2006, 12h52
  5. Réponses: 7
    Dernier message: 10/05/2006, 11h15

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