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

Langage Java Discussion :

Problème avec Vector et Iterator


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    Points : 49
    Points
    49
    Par défaut Problème avec Vector et Iterator
    Bonsoir à tous,

    Je suis désespéré car je n'arrive pas à récupérer l'élément d'un vecteur. Voici mon code Main :

    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
    package projet4ig;
    import javax.swing.*;
    import java.util.*;
     
    public class Main {
     
        public static void main(String[] args) {
            int test=0;
            Etudiant p1 = new Etudiant("Jean","Michel");
            p1.choixstu.add("Alcatel");
            p1.choixstu.add("Alstom");
     
            Entreprise e1 = new Entreprise("Alstom");
            e1.choixsoc.add("Jean");
            e1.choixsoc.add("Michel");
     
            while (p1.stu.hasNext())
            {
     
                System.out.println(p1.stu.next());
            }  
     
        } 
    }
    Voici maintenant le code de la classe Etudiant (la classe entreprise est construite sous le même modèle) :

    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
    package projet4ig;
    import javax.swing.*;
    import java.util.*;
     
    public class Etudiant {
       private String nom;
       private String prenom;
       Vector choixstu = new Vector();
       Iterator stu = choixstu.iterator();
     
        public Etudiant(String nom1,String prenom1) 
        {
            nom=nom1;
            prenom=prenom1;
        }
        public Vector getchoix()
        {
            return choixstu;
        }
        public String getnom()
        {
            return nom;
        }
        public String getprenom()
        {
            return prenom;
        }
    }
    Quand je compile le code, il me met une exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Exception in thread "main" java.util.ConcurrentModificationException
            at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
            at java.util.AbstractList$Itr.next(AbstractList.java:343)
            at projet4ig.Main.main(Main.java:42)
    Java Result: 1
    Apparemment cela serait un problème dû au Next() mais si je retire cette ligne de code et que j'affiche une variable dans la boucle while(), il me l'affiche indéfiniment...alors que mon vecteur n'est pas rempli...je ne comprends pas du tout...

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Les Iterators sont des petites choses fragiles qu'il ne faut pas brutaliser.

    Ils ne supportent pas des modifications dans la collection qu'ils parcourent, sauf par leur intérmédiaire (des fois).

    Or, toi, tu crées par new Etudiant... le Vector choixtu et son Iterator, puis, dans le main, tu poursuis en ajoutant des choses au Vector, et seulement après, tu parcoures l'itérator. C'est cela qui ne va pas.

    Supprime la création de l'Iterator dans le constructeur de Etudiant, et procède plutot ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            ... début ...
            e1.choixsoc.add("Jean");
            e1.choixsoc.add("Michel");
            Iterator stu = e1.choixsoc.iterator();
            while (stu.hasNext())
              ... etc ...

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 03/06/2008, 13h19
  2. Problème avec vector de classe template :(
    Par coyotte507 dans le forum Langage
    Réponses: 7
    Dernier message: 16/04/2008, 12h40
  3. Réponses: 2
    Dernier message: 07/12/2007, 02h19
  4. Problème avec vector<char>
    Par Fahmi06 dans le forum C++
    Réponses: 6
    Dernier message: 13/08/2007, 17h10
  5. Problème avec vector par référence
    Par vdumont dans le forum SL & STL
    Réponses: 11
    Dernier message: 09/05/2006, 08h25

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