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 :

Trie d'une Liste


Sujet :

avec Java

  1. #1
    En attente de confirmation mail
    Inscrit en
    Mars 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 35
    Points : 33
    Points
    33
    Par défaut Trie d'une Liste
    Bonjour tous le monde ,

    Je voudrai trier par ordre alphabétique une liste qui est composer de 2 champs ,le trie se fait selon le premier champ.

    le premier champ bien sur est une chaine de caractère ,le deuxième l'est aussi

    Il existe la méthode Collection.sort(malist) seulement cette méthode trie une liste simple cad liste de type String

    Dans mon cas ,c'est un peut différent car ma liste contient 2 champ,et les éléments ne se répète pas, du cout j'ai penser a redéfinir la méthode ComparTo() mais comment le faire aucune idée ?

    Merci pour votre contribution

  2. #2
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 43
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par cobra150 Voir le message
    Bonjour tous le monde ,

    Je voudrai trier par ordre alphabétique une liste qui est composer de 2 champs ,le trie se fait selon le premier champ.

    le premier champ bien sur est une chaine de caractère ,le deuxième l'est aussi

    Il existe la méthode Collection.sort(malist) seulement cette méthode trie une liste simple cad liste de type String

    Dans mon cas ,c'est un peut différent car ma liste contient 2 champ,et les éléments ne se répète pas, du cout j'ai penser a redéfinir la méthode ComparTo() mais comment le faire aucune idée ?

    Merci pour votre contribution

    Hello,

    Il te faut implémenter l'interface Comparable et la methode compareTo

    voila un exemple qui te montre comment faire :

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    package com.test;
     
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
     
     
    public class Personne implements Comparable<Personne> {
     
    	private String nom;
    	private String prenom;
     
    	public String getNom() {
    		return nom;
    	}
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
    	public String getPrenom() {
    		return prenom;
    	}
    	public void setPrenom(String prenom) {
    		this.prenom = prenom;
    	}
    	@Override
    	public int compareTo(Personne p) {
    		return nom.compareToIgnoreCase(p.getNom());
    	}
     
    	public static void main(String[] args){
    		List<Personne> personnes = new ArrayList<Personne>();
    		Personne p1 = new Personne();
    		Personne p2 = new Personne();
    		Personne p3 = new Personne();
    		Personne p4 = new Personne();
     
    		p1.setNom("aaa");
    		p1.setPrenom("zzz");
    		p2.setNom("bbb");
    		p2.setPrenom("zzz");
    		p3.setNom("ccc");
    		p3.setPrenom("zzz");
    		p4.setNom("ddd");
    		p4.setPrenom("zzz");
     
    		personnes.add(p4);
    		personnes.add(p3);
    		personnes.add(p2);
    		personnes.add(p1);
     
    		for (Personne personne : personnes) {
    			System.out.println(personne.getNom());
    		}
     
    		System.out.println("--------");
    		Collections.sort(personnes);
     
    		for (Personne personne : personnes) {
    			System.out.println(personne.getNom());
    		}
    	}
     
     
    }

    Cordialement,

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Pour information, une "List de deux champs", ça ne veut rien dire.
    Une List peut être une List<String> ou une List<Date> ou une List<Machin>, mais pas une List<Machin, Chose>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    En complément de l'exemple donnée par @Neomaven

    Comme on ne peut trier une liste que sur une seule donnée,
    il faut concaténer les deux chaînes de caractère
    et opérer la comparaison sur cette concaténation

    Concrètement on ne peut pas comparer
    "Dupont", "Arthur"
    avec
    "Martin", "Véronique"

    mais on peut comparer
    "Dupont Arthur"
    avec
    "Martin Véronique"

    on compare donc une chaîne avec une autre chaîne
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

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

Discussions similaires

  1. trie d'une liste chainée
    Par abdelghani666 dans le forum Débuter
    Réponses: 3
    Dernier message: 18/02/2012, 19h31
  2. trie d'une liste pour différencier des tables
    Par ifsera dans le forum Collection et Stream
    Réponses: 0
    Dernier message: 28/08/2010, 14h58
  3. Trie d'une liste au chargement
    Par lionel84 dans le forum Hibernate
    Réponses: 0
    Dernier message: 19/11/2008, 11h31
  4. Trie d'une liste selon un critère
    Par Albenejean dans le forum C++
    Réponses: 5
    Dernier message: 13/07/2007, 18h07
  5. Trie d'une liste d'array
    Par noOneIsInnocent dans le forum Collection et Stream
    Réponses: 15
    Dernier message: 06/01/2006, 12h05

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