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 :

Trier un ArrayList selon deux criteres


Sujet :

Collection et Stream Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 19
    Points : 16
    Points
    16
    Par défaut Trier un ArrayList selon deux criteres
    Bonjour,

    Je souhaites trier une ArrayList selon deux critères :

    J'ai une ArrayList qui contient des objets "produit". Un objet "produit" contient en autre un attribut "magasin" et un attribut "description".
    Je voudrais classer ma liste en ordre alphabétique par magasin puis par description. En fait, une liste de ce style :

    <magasin1,description1><magasin1,description2><magasin1,description3><magasin2,description1><magasin2,description2><magasin2,description3><magasin3,description1><...>

    En utilisant un Collections.sort(maListe) ce la fonctionne mais que sur un seul critère.
    J'ai utilisé l'aide : http://java.developpez.com/faq/java/...rierCollection de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public int compareTo(Object other) {
     
            String m1 = ((Produit) other).getMagasin();
            String m2 = this.getMagasin();
            if (m1.compareTo(m2) > 0) {
                return -1;
            } else if (m1.equals(m2)) {
                return 0;
            } else {
                return 1;
            }
        }
    qui les classe par "magasin"

    Auriez vous une idée ?

    merci

  2. #2
    Membre éprouvé
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Points : 1 034
    Points
    1 034
    Par défaut
    Tu devrai essayer ça :

    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
    21
    22
    23
    24
    25
    26
    27
     
    public int compareTo(Object other) {
     
    String m1 = ((Produit) other).getMagasin();
    String m2 = this.getMagasin();
    if (m1.compareTo(m2) > 0) {
    return -1;
    } 
    if (m1.compareTo(m2) < 0) {
    return 1;
    }
    //à ce point du programme m1 est égale à m2
    //donc on va les trier selon la description
    String d1 = ((Produit)other).getDescription();
    String d2 = this.getDescription();
    if (d1.compareTo(d2) > 0) {
    return -1;
    } 
    if (d1.compareTo(d2) < 0) {
    return 1;
    }
     
    //à ce point du programme m1.equals(m2) et d1.equals(d2)
    //donc les deux objets sont egaux alors on retourne 0
    return 0;
     
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 19
    Points : 16
    Points
    16
    Par défaut
    Merci, c'est exactement ce que je cherchais

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

Discussions similaires

  1. [MySQL] Trier selon deux colonnes
    Par PIEPLU dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/07/2013, 19h00
  2. Réponses: 3
    Dernier message: 07/10/2009, 19h23
  3. Trier un arrayList selon differents criteres
    Par TangoZoulou dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 07/05/2009, 11h05
  4. trier une arraylist selon un critère
    Par marion5515 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 15/03/2008, 20h25
  5. comment filtrer une table avec deux criteres càd 2 colonnes
    Par athmane2dz dans le forum Bases de données
    Réponses: 7
    Dernier message: 28/07/2004, 15h25

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