Quote Originariamente inviata da cicciozza Visualizza il messaggio
Ed è qui che non riesco a capire come fare l'esclusione.
Dato un ArrayList contenente N elementi, a patto che nella collezione non ci siano "duplicati" (ovvio), per estrarre elementi "unici" (che siano estraibili una volta sola), la soluzione è banale:

a) si genera un indice "casuale" compreso tra 0 e size()-1 (o se vogliamo vederlo nel senso del nextInt di Random, fino a size() escluso)
b) si invoca il remove(int index) di ArrayList. Questo rimuove l'elemento dalla collezione E lo restituisce.

Si ripete da a) finché serve o finché ci sono elementi. Tutto qui. Chiaramente la collezione viene modificata togliendo materialmente gli elementi. Inoltre il remove(indice) è poco efficiente poiché ha complessità O(n) in quanto deve spostare indietro di una posizione tutti gli elementi successivi. Se hai 10, 100, 1000 elementi questo NON è un problema rilevante o a cui dovresti pensare visto che è solo una esercitazione.

Se non vuoi modificare la collezione o se vuoi estrarre in modo più efficiente, ci sono altre soluzioni.