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

Java Discussion :

Erreur au niveau de java.util.ConcurrentModificationException


Sujet :

Java

  1. #1
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juin 2006
    Messages : 123
    Points : 59
    Points
    59
    Par défaut Erreur au niveau de java.util.ConcurrentModificationException
    Bonjour / Bonsoir a tous...Je reviens encore avec un nouveau problème ( desolé je suis très zero en Java )
    OK celui ci se trouve au niveau d'une erreur :
    Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException

    J'implemente une arrayList que j'affiche le resultat dans une JList.
    J'ai deux classes/ la 1ere me sert d'interface:

    Code de mon bouton nouveau pour créer un nouvel patient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // cette partie add a new elemnt ds mon arraylist
    PatientID++;
    patientIDJTextField.setText( String.valueOf( PatientID ) );
    newPatient = new Patient(PatientID);		
    patientArrayList.add(newPatient);
    position = patientArrayList.size() - 1; // pour la position de mon Iterator
    code dans mon bouton Add:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Iterator pIt = patientArrayList.iterator();
     
    while (pIt.hasNext())
          {
         Patient currentPatient=(Patient)pIt.next(); 
         patientArrayList.add(String.valueOf(currentPatient.getPatientIdentificationNumber()));
          } 
          	patientdetailsList.setListData(patientArrayList.toArray());
    le problème se trouve au niveau de la ligne 5 du code.
    ici se trouve ma classe patient:
    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
     
    public class Patient {
     
        private int PatientIdentificationNumber;
     
     
    public Patient(int patientIDValue){
     
            PatientIdentificationNumber = patientIDValue; 
     
    }
    public int getPatientIdentificationNumber() {
            return PatientIdentificationNumber;
        }
     
        public void setPatientIdentificationNumber(int patientIDValue) {
             PatientIdentificationNumber = patientIDValue; 
        }
    }
    Je sais que cette exception est due au fait que j'ai essayé de modifier une liste que je parcours. mais je ne sais pas comment la resoudre...Merci bien pour votre aide...

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Iterator pIt = patientArrayList.iterator();
         
    while (pIt.hasNext())
          {
         Patient currentPatient=(Patient)pIt.next(); 
         patientArrayList.add(String.valueOf(currentPatient.getPatientIdentificationNumber()));
          } 
          	patientdetailsList.setListData(patientArrayList.toArray());
    A mon avis, t'as une belle erreur de conception là. Tu parcoure patientArrayList, qui contient des Patient, et tu y ajoute des String. Tu va donc finir avec une list contenant des données mixtes (Patient et String) et donc de toutes facons, ton code si il marchait, ne marcherait pas deux fois (puisqu'il suppose qu'il s'agit d'une liste de Patient et pas de String au départ). Ton problème, de base c'est que tu modifie la liste pendant que tu la parcoure avec un itérateur. Ca provoque des ConcurrentModificationException lors de l'appel à it.next().

    PS: pour éviter le premier problème que je mentionne (mettre les valeur visiblement dans la mauvaise liste), je te recommande de passer par des generics, le compilateur t'aurais interdit de mettre de String dans une List<Patient>

Discussions similaires

  1. Erreur "java.util.ConcurrentModificationException"
    Par Krisiun dans le forum Langage
    Réponses: 8
    Dernier message: 02/11/2013, 22h53
  2. Message d'erreur : java.util.ConcurrentModificationException
    Par leara500 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 02/02/2013, 15h47
  3. Erreur java util.ConcurrentModificationException
    Par dsryam dans le forum Général Java
    Réponses: 9
    Dernier message: 30/01/2011, 15h08
  4. Réponses: 1
    Dernier message: 15/03/2010, 21h53

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