Sto facendo funzionare un server, e ho un arraylist di tipo client Quando un client si connette tramite serversocket.accept() passo il nuovo socket al costruttore ArrayLists. Questo è tutto dentro il costruttoreCome conservare i clienti in un elenco
this.add(new Client(Socket client));
mio problema è quando un client si disconnette, si chiude il socket, ma non elimina il suo posto nella ArrayList, e spostare tutto giù uno. Quindi l'arraylist cresce costantemente.
Cosa posso fare/utilizzare per risolvere questo problema?
A volte eseguirò comandi che verranno eseguiti su tutti i client, motivo per cui memorizzo i client in un arraylist.
Esiste un'alternativa migliore per l'archiviazione dei client in un server?
Update 1
Le classi sono nelle fasi iniziali. Molto poco è stato implementato. Finora l'opzione HashMap suggerita nella risposta funziona meglio per me. Grazie per le vostre risposte
si dovrebbe verificare se il client è ancora connesso al server. In caso contrario, utilizzare il metodo 'java.util.ArrayList.remove (Object)' per rimuovere il client da ArrayList. –
Quando il client si disconnette, hai l'oggetto 'Client' che vuoi rimuovere? –