Parcourir une arrayList, probleme iterateur

Parcourir une arrayList, probleme iterateur - Java - Programmation

Marsh Posté le 17-12-2007 à 21:02:40    

Bonjour à tous,  
 
Voilà je réalise un chat en java et j'ai donc du coté de mon application serveur une arraylist pour répertorier tous les clients connectés au serveur  
Mais quand je connecte un client il l'ajoute dans l'arraylist, ça va
 
Mais je ne parviens pas à accéder à ce client  
 

Code :
  1. //contenu du Thread
  2. try {
  3.      if(ns.ss.accept()!=null){
  4.       Client c = new Client(ns.ss.accept()); // on crée un nouvel objet Client quand le serversocket reçoit une connexion et on lui passe le socket client créé  
  5.       clients.add(c); //j'ajoute le nouveau client dans l'arraylist
  6.       System.out.println(clients.isEmpty()); // Je vérifie si la liste est vide
  7.                                                         Renvoie FALSE
  8.       System.out.println(clients.contains(c));//je vérifie si la liste contient client
  9.                                                         Renvoie TRUE
  10.      }
  11. //maintenant je veux lire les messages venant des clients
  12.      if(!clients.isEmpty()){ //si l'arraylist n'est pas vide
  13.       it = clients.iterator(); //itérateur pour parcourir l'arraylist
  14.       Client element;
  15.       Client element2;
  16.       Message affiche;
  17.       while(it.hasNext()){ //boucle pour parcourir l'arraylist
  18.        element=(Client)it.next();//client actuel  
  19.        System.out.println(element);//j'essaie de voir si le client est bien là
  20. Renvoie NULL !
  21.        affiche = element.getMessage();
  22.        while(it.hasNext()){
  23.         element2=(Client)it.next();
  24.         element2.oos.flush();
  25.         element2.oos.writeObject(affiche);
  26.         element2.oos.close();
  27.        }
  28.       }
  29.      }


 
Voilà j'ai annoté le code pour que vous compreniez le problème  
J'ai bien redéfinit le toString de l'objet client pour pouvoir l'afficher sans probleme...
 
Est-ce que je parcoure bien mon arraylist?
 
Quelqu'un peut-il m'aider?  
 
Merci d'avance


Message édité par Lou013 le 17-12-2007 à 21:28:54

---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
Reply

Marsh Posté le 17-12-2007 à 21:02:40   

Reply

Marsh Posté le 18-12-2007 à 08:39:22    

1) Tu peut très bien avoir stocké un null dans ton ArrayList
2) Pourquoi est-ce que tu parcours 2 fois ta liste ?


---------------
Light is right
Reply

Marsh Posté le 18-12-2007 à 12:02:02    

Merci  
 
Je parcours 2 fois pour faire un broadcast des messages du chat
 
mais j'ai plutot utilisé une boucle for, plus rapide et moins de problemes qu'avec les itérateurs...


---------------
[topic des lieux abandonnés] | "Sur HFR chacun a raison et les autres sont des cons"
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed