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


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 97
    Points : 78
    Points
    78
    Par défaut Trier un arrayList
    Bonjour,
    j’essaye de trier une liste d'objet.
    Pour cela j'ai créer une classe qui implémente de comparator mais le tri n'a pas lieu.

    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
     
    public class CutOffCommandeCompareCode  implements Comparator {
     
    	public CutOffCommandeCompareCode()
    	{
     
    	}
     
    	public int compare(Object arg0, Object arg1) {
     
    		CutOffCommande c1=(CutOffCommande)arg0;
    		CutOffCommande c2=(CutOffCommande)arg1;
    		int result=c1.getCodeTypeBudget().trim().compareTo(c1.getCodeTypeBudget().trim());
    		if(result==0)
    		{
    			result=c1.getCodeFournisseur().trim().compareTo(c2.getCodeFournisseur().trim());
    			if(result==0)
    			{
    				result=c1.getNumeroCommande().trim().compareTo(c2.getNumeroCommande().trim());
    			}
    		}
    		return result;
    	}
     
    }
    et pour faire le tri j'utilise la syntaxe suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Collections.sort(coList,new CutOffCommandeCompareCode());
    Je ne vois pas d’où viens le problème.

    Merci de vos réponse

  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
    à premiere vue, t'a une erreur dans cette ligne tu compare c1 à lui même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int result=c1.getCodeTypeBudget().trim().compareTo(c1.getCodeTypeBudget().trim());

  3. #3
    Membre régulier
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 97
    Points : 78
    Points
    78
    Par défaut
    Yep, je suis un boulet. J'aurai voulu que ça ne résout pas mon problème.
    Malheureusement le tri ne fonctionne toujours pas :s

  4. #4
    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
    T'as un problème avec quelques else et la valeur de ton result sera peut etre modifié avant le dernier return.

    Essai plutot ç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
     
    	public int compare(Object arg0, Object arg1) {
     
    		CutOffCommande c1=(CutOffCommande)arg0;
    		CutOffCommande c2=(CutOffCommande)arg1;
    		int result=c1.getCodeTypeBudget().trim().compareTo(c2.getCodeTypeBudget().trim());
    		if (result<>0) return result; //Si les codeTypeBudget ne sont pas egaux retourner le resultat leur comparaison
    		//à ce point du programme c1.getCodeTypeBudget().trim et c2.getCodeTypeBudget().trim() sont egaux
    		//Alors on compare les codeFournisseurs.
    		result=c1.getCodeFournisseur().trim().compareTo(c2.getCodeFournisseur().trim());
    		if (result<>0) return result; //Si les codeFournisseur ne sont pas egaux retourner le resultat leur comparaison
    		//à ce point du programme c1.getCodeFournisseur().trim() et c2.getCodeFournisseur().trim() sont egaux
    		//Alors on compare les NumeroCommande
    		result=c1.getNumeroCommande().trim().compareTo(c2.getNumeroCommande().trim());
    		if (result<>0) return result; //Si les numeroCommande ne sont pas egaux retourner le resultat de leur comparaison.
    		//à ce point du programme c1.getNumeroCommande().trim() et c2.getNumeroCommande().trim() sont egaux
    		//Alors les deux objets sont egaux donc retourner 0
    		return 0;
    	}

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    pourrais tu nous sortir ces trois valeurs pour chaque élément de la liste après tri?

  6. #6
    Membre régulier
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 97
    Points : 78
    Points
    78
    Par défaut
    Désolé les amis,
    Je devais quitter le boulot à 18h,
    le code que j'ai mis au dessus fonctionne, je me suis juste tromper sur l'affichage de l'arrayList

    Merci pour ta reflexion LinkinSelim, l'algo que tu propose et celui que j'ai publié font la même chose, la méthodologie de retour du compare qui change.

    En tout cas merci pour vos réponse je le marque comme résolu.

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

Discussions similaires

  1. Trier un ArrayList
    Par Himotep dans le forum C#
    Réponses: 5
    Dernier message: 08/05/2011, 19h21
  2. Trier un ArrayList selon deux criteres
    Par chamanR dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 20/10/2010, 00h39
  3. Trier une arrayList
    Par toma03 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 28/07/2009, 15h32
  4. Trier un arrayList selon differents criteres
    Par TangoZoulou dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 07/05/2009, 11h05
  5. trier une arraylist selon un critère
    Par marion5515 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 15/03/2008, 20h25

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