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 :

Vector de Personnes


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 187
    Par défaut Vector de Personnes
    Bonjour,
    je voudrais créer une classe ListeDePersonnes qui servira à mémoriser des Personnes et j'aimerais le faire avec un Vector.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class Personne{	
            private String nom;
    	private String prenom;
    	...
    }
    Pour commencer, pouvez-vous me dire si ceci est correcte?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class ListeDePersonnes{
        Vector listePers = new Vector ();
     
    }
    Ensuite, je rajouterais une méthode pour tester le fonctionnement du vecteur:

    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 class ListeDePersonnes{
        Vector listePers = new Vector ();
     
        public void testVector(){    
            listePers.addElement(new Personne (André, Tara);
            listePers.addElement(new Personne (Antoine, Dupont);
            listePers.addElement(new Personne (Antoinette, Durand);
     
        // ici je voudrais parcourir mon vecteur avec un foreach 
        // afficher le nom des trois personnes mais je n'y arrive pas... 
     
        }
     
    }

  2. #2
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    est-ce que le choix du Vector est imposé ? car en théorie une ArrayList est plus adaptée si t'utilises un seul thread (faq1, faq2).
    A part ça, il serait plus simple d'étendre Vector ou ArrayList plutôt que de stocker une liste interne. Sinon pour ton for et le typage tu peux regarder ici.
    Bye

  3. #3
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonjour,

    En quelle version de java travailles tu?
    Parce que les Vector ne sont plus utilisés depuis un moment.
    http://java.developpez.com/faq/java/...IONS_info_list

    Et grâce aux classes génériques, tu n'as surement pas besoin de créer cette classe:

    si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Personne> listePersonne = new ArrayList<Personne>();
    Tu pourras faire après


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(Personne personne : listePersonne){
        personne.methode();
    }

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 187
    Par défaut
    Je suis obligé d'utiliser un Vector...

    D'avance merci.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Bon bah...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<TaClasse> list = new Vector<TaClasse>();
    Et quand tu ne seras plus obligé d'utiliser Vector, remplace-le par ArrayList

  6. #6
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    Ici est là question
    Citation Envoyé par alex2746 Voir le message
    // ici je voudrais parcourir mon vecteur avec un foreach
    // afficher le nom des trois personnes mais je n'y arrive pas...

    }

    }
    Une réponse possible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dans la classe Personne
    public String getNom(){return this.nom;}
    public String getPrenom(){return this.prenom;}
     
    Dans ton Main par exemple :
     Enumeration e=listePers.elements();
        System.out.println("Les personnes enregistrées");
        while(e.hasMoreElements()){
        Personne laPersonne = (Personne) e.nextElement());
          System.out.println(laPersonne.getNom() + " " + laPersonne.getPrenom());
        }

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 187
    Par défaut
    Salut, je dois utiliser un FOREACH obligatoirement, pas un itérateur...

    Je pensais pouvoir donc écrire ceci, mais ca ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for (Personne p : listePers)
                System.out.println("rien");
    Quelqu'un pourrait m'aider à utiliser le FOREACH pour parcourir mon vecteur?

    Merci d'avance.

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Oui, change l'initialisation de ton vecteur pour ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Vector<Personne> listePers = new Vector<Personne>();

  9. #9
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 187
    Par défaut
    Merci.
    Un conseil...
    on me demande donc de créer une classe servant à mémoriser des Personnes et d'utiliser pour ce faire un Vector.

    Est ce mieux de déclarer le Vector en private ou non?

    Donc, ceci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public class ListePersonnes{
        private Vector<Personne> listePers = new Vector <Personne> ();
    }
    Ou ceci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public class ListePersonnes{
        Vector<Personne> listePers = new Vector <Personne> ();
    }
    Dernière chose:
    Si on me demande uniquement de faire ce que j'ai décris plus haut, je n'ai pas besoin de constructeurs, autres attributs, méthodes, etc?

    Merci d'avance.

  10. #10
    Membre émérite
    Avatar de michel.di
    Homme Profil pro
    Freelance
    Inscrit en
    Juin 2009
    Messages
    782
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 782
    Par défaut
    normalement tu déclares tes attributs en private et tu ne donnes que les accesseurs nécessaires. Tout les attributs ne sont pas forcément visible pour l'extérieur

  11. #11
    Membre chevronné Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Par défaut
    Sinon tu peux aussi implémenter Iterable voir le code ci-dessous.

    Je suis contre l'héritage de Vector. La composition reste une meilleur solution. En effet, si tu hérite de Vector, ton objet va posséder les méthodes addElement, removeElement,... Si un jour tu décides de plus utiliser Vector mais ArrayList, alors tu devras soit recoder tous les clients de la classe, soit implémenter ces méthodes. Dans la composition, tu expose uniquement les méthodes que tu veux (et avec le nom que tu décides). Donc même si tu changes ton implémentation, les clients ne changent pas.

    Pour des raisons un peu similaires à la composition, ta liste de personnes peut être de type List en utilisant la classe Vector comme implémentation. Si un jour tu changes l'implémentation en ArrayList, le reste de ta classe ne change pas.

    C'est pourquoi je propose comme solution les classes suivantes :

    La classe Personne
    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
     
    public class Personne {
        private String nom;
        private String prenom;
     
        public Personne() {
        }
     
        public Personne(String prenom, String nom) {
            this.nom = nom;
            this.prenom = 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;
        }
    }
    La classe ListeDePersonne :
    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
     
    import java.util.Collection;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Vector;
     
    public class ListeDePersonnes implements Iterable<Personne> {
        private List<Personne> listePers = new Vector<Personne>();
     
        public boolean add(Personne p) {
            return listePers.add(p);
        }
     
        public boolean addAll(Collection<Personne> p) {
            return listePers.addAll(p);
        }
     
        public Iterator<Personne> iterator() {
            return listePers.iterator();
        }
     
        public boolean remove(Personne p) {
            return listePers.remove(p);
        }
     
        public boolean removeAll(Collection<Personne> personnes) {
            return listePers.removeAll(personnes);
        }
     
        public int size() {
            return listePers.size();
        }
    }
    La classe de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class TestPersonne {
     
        public static void main(String[] args) {
            ListeDePersonnes listePersonnes = new ListeDePersonnes();
            listePersonnes.add(new Personne("André", "Tara"));
            listePersonnes.add(new Personne("Antoine", "Dupont"));
            listePersonnes.add(new Personne("Antoinette", "Durand"));
     
            for (Personne p : listePersonnes) {
                System.out.println(p.getPrenom() + " " + p.getNom());
            }
        }
    }

Discussions similaires

  1. Réponses: 19
    Dernier message: 14/11/2006, 16h45
  2. Recherche JBuilder personnal 6 ou 7
    Par raout dans le forum JBuilder
    Réponses: 6
    Dernier message: 05/05/2003, 20h34
  3. Installation JBUILDER 8 Personnal
    Par jpclerc dans le forum JBuilder
    Réponses: 2
    Dernier message: 22/03/2003, 09h58
  4. JBuilder 7 personnal sort à chaque save
    Par Hannouz dans le forum JBuilder
    Réponses: 4
    Dernier message: 17/12/2002, 22h53
  5. [Rave]Personne ne l'utilise ?? Demande d'info...
    Par Barbibulle dans le forum Rave
    Réponses: 4
    Dernier message: 07/11/2002, 23h12

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