Originariamente inviato da -MaVeRiK86-
Io dovrei eliminare il suo doppio dall'array lasciandone solo uno (il mio metodo li elimina tutti e due invece)
Ci sto impazzendo, cosa sbaglio?Qualcuno potrebbe aiutarmi?
Si può risolvere in diversi modi.

Un modo è ordinare l'array secondo un ordinamento tale per cui eventuali "doppioni" si posizionano in sequenza. A quel punto basta una sola scansione dell'array, dal secondo "doppione" in poi che trovi che è uguale al primo, lo elimini "virtualmente" giocando sugli indici in modo che gli episodi successivi vengano assegnati a indici inferiori.

Altro modo è usare un "set", ovvero una collezione che non ammette duplicati. Qui però la "uguaglianza" dovrebbe basarsi su equals(). E tra l'altro non sarebbe male definire l'equals() in modo da semplificarti la vita. Quando 2 episode sono "uguali"?? A rigor di logica, dovrebbe bastare quando hanno serial e titolo uguale.

Oppure ancora fare il doppio for innestato, come stavi facendo. Ma non così. Innanzitutto hai fatto partire il for interno da 0 e poi "salti" l'elemento se è allo stesso indice. Ma se ci pensi, non c'è bisogno di partire da più indietro.


Esempio con le stringhe:

codice:
public class Prova {
    public static void main(String[] args) {
        String[] arr = { "ciao", "pippo", "pluto", "ciao", "hello", "ciao", "pippo" };
        int logicalSize = arr.length;

        for (int i = 0; i < logicalSize; i++) {
            String elem = arr[i];

            int s = logicalSize;

            for (int j = i+1, w = j; j < s; j++) {
                if (elem.equals(arr[j])) {
                    logicalSize--;
                } else {
                    arr[w++] = arr[j];
                }
            }
        }

        for (int i = 0; i < logicalSize; i++) {
            System.out.println(arr[i]);
        }
    }
}
C'è una cosa che non ho fatto: annullare i reference al fondo. All'inizio la dimensione logica è 7, alla fine restano 4. Gli ultimi 3 andrebbero annullati, specialmente se, come nel tuo caso, hai oggetti complessi. Basta tenersi la dimensione iniziale e poi fare un ciclo for finale.