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

avec Java Discussion :

Problème de tri dans une liste


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2011
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 32
    Par défaut Problème de tri dans une liste
    Bonjour j'ai un petit problème pour un de mes projets.

    C'est vraiment une erreur bête qui doit être quelque part mais je ne la vois pas.

    J'ai besoin de trier par ordre alphabétique une liste contenant plusieurs objets du même type. Je veux qu'ils soient classé par ordre alphabétique du nom.

    J'ai ça comme code.

    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
     
    import java.util.*;
    public class main {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
     
                    List<Ingredient> list3 = new LinkedList<Ingredient>();
     
    		list3.add(new Ingredient("b","liquide",0.5,true));
    		list3.add(new Ingredient("c","liquide",4,true));
    		list3.add(new Ingredient("a","solide", 0.4,true));
     
    		System.out.println(list3);
     
    		Collections.sort(list3);
     
    		System.out.println(list3);
     
    	}
     
    }
    Mon type Ingredient est relativement basique et j'ai bien pensé à redéfinir la méthode compareTo() afin de pouvoir trier correctement des objets de type Ingredient.

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    import java.util.*;
     
    public class Ingredient implements Comparable{
     
    	public String nom;
    	protected String type;
    	protected boolean simple;
    	protected double quantite;
     
     
    	public Ingredient(String nom, String type, double quantite)
    	{
    		this.nom = nom;
    		this.type = type;
    		this.quantite = quantite;
    		this.simple = true;
    	}
     
    	public Ingredient(String nom, String type, double quantite, boolean simple)
    	{
    		this.nom = nom;
    		this.type = type;
    		this.quantite = quantite;
    		this.simple = simple;
    	}
     
     
    	public int compareTo(Ingredient i) 
    	{
    		return this.getNom().compareTo(i.getNom());
    	}
     
    	@Override
    	public int compareTo(Object o) {
    		// TODO Auto-generated method stub
    		return 0;
    	}
     
     
    }
    Je n'ai volontairement pas mis toutes les méthodes de ma classe Ingredient.

    Et lors de l'exécution j'ai ça

    [Nom : b 0.5, Nom : c 4.0, Nom : a 0.4] <-- liste avant le tri
    [Nom : b 0.5, Nom : c 4.0, Nom : a 0.4] <-- liste après le tri mais qui n'est toujours pas triée.

    Je m'en remet à vous je ne vois pas trop ce qui m'empêche de faire un tri correct.

  2. #2
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par zatura Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    	@Override
    	public int compareTo(Object o) {
    		// TODO Auto-generated method stub
    		return 0;
    	}
    Votre méthode de tri ne fait strictement rien là!

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Salut,

    Voir cette FAQ:

    http://java.developpez.com/faq/java/...rierCollection

    Cordialement,

    Dan

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Par défaut
    Bonjour,

    Moi ce que je ne comprend pas c'est pourquoi la méthode qui prend un Object en paramètre prévaut sur la méthode qui prend un Ingrédient ?

    Merci d'avance

  5. #5
    Expert éminent
    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 : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    parce que la seule et unique méthode que défini Comparable, c'est compareTo(Object) et que c'est donc celle là que tout ce qui traite des Comparable va utiliser.

    L'autre méthode, tu l'a définie, c'est bien, mais à part toi, personne ne la connait.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 201
    Par défaut
    logique

    En revanche si on implémente Comparable<Ingredient> j'imagine que la méthode utilisée par défaut serait celle qui prend un Ingrédient en paramètre ?

    Merci de ta réponse

Discussions similaires

  1. Problème de format dans une liste SharePoint
    Par tipierre76 dans le forum SharePoint
    Réponses: 1
    Dernier message: 05/06/2008, 20h21
  2. tri dans une liste déroulante
    Par paolo2002 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 27/02/2008, 12h45
  3. [MySQL] problème d'affichage dans une liste
    Par bromlecornu dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/05/2007, 16h08
  4. [FLASH 8] Problème de sélection dans une liste
    Par jpboogie dans le forum Flash
    Réponses: 3
    Dernier message: 29/09/2006, 14h12
  5. [CSS] Problème d'espaces dans une liste
    Par sylsau dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 03/08/2006, 13h46

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