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 :

Set et TreeSet


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Par défaut Set et TreeSet
    Bonsoir,

    Afin de comprendre le bon foctionnement des collectors à savoir les Set et TreeSet, j'ai fait un tout petit programme pour les manipuler, seulement dés le départ je trouve un problème !!

    j'ai créer une classe étudiant ou on donne juste le nom.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class Etudiant {
     
        private String n;
        public Etudiant(String nom)
        {
            this.n = nom;
        }
        public String getNom ()
        {
            return n;
        }
    }
    et un TreeSet d'étudiant.
    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
     
    public static void main(String[] args) {
     
        Set set = new TreeSet<Etudiant>();
        set.add(new Etudiant("nom1"));
        set.add(new Etudiant("nom2"));
        Etudiant et1;
     
        Iterator iterator = set.iterator();
        while (iterator.hasNext()) 
        {
            et1 = (Etudiant) iterator.next();
            System.out.println(et1.getNom() );
        }
      }
    il m'affiche cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Exception in thread "main" java.lang.ClassCastException: essaye.Etudiant cannot be cast to java.lang.Comparable
    	at java.util.TreeMap.compare(TreeMap.java:1188)
    	at java.util.TreeMap.put(TreeMap.java:531)
    	at java.util.TreeSet.add(TreeSet.java:255)
    	at essaye.Essaye.main(Essaye.java:24)
    Java Result: 1
    puis-je connaitre le problème s'il vous plait ?

  2. #2
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Par défaut
    Hmm, il faut savoir que la classe TreeSet trie automatiquement les objets au fur et à mesure qu'on les insèrent. En cela, sachant qu'il faut bien comparer les objets afin de pouvoir les trier, il faut que ces objets là implémentent au moins l'interface Comparable ou Comparator
    C'est expliqué sur la javadoc http://docs.oracle.com/javase/6/docs...l/TreeSet.html
    donc il faut faire lors de la déclaration de ta classe Etudiant
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    class Etudiant implements Comparable
    ou
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    class Etudiant implements Comparator
    Voilà
    Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
    Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Par défaut
    Oui c'est vrai, je vais lire la Doc .

    Merci encore

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

Discussions similaires

  1. set term ^
    Par tux dans le forum Débuter
    Réponses: 8
    Dernier message: 12/10/2004, 20h42
  2. Créer les get et set des classes
    Par cameleon2002 dans le forum JBuilder
    Réponses: 3
    Dernier message: 17/09/2003, 21h03
  3. IB 6.0.1 - Win XP - Character Set
    Par SuperTotor dans le forum InterBase
    Réponses: 4
    Dernier message: 03/06/2003, 20h25
  4. Query data set
    Par Sandra dans le forum JBuilder
    Réponses: 3
    Dernier message: 20/01/2003, 10h08
  5. character set // Nls_lang
    Par fopicht dans le forum Oracle
    Réponses: 2
    Dernier message: 23/05/2002, 12h04

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