Eliminar duplicados en ArrayList - Java

Tengo algún problema con mi código Java. Se supone que debo usar bucles y no cualquier otro método. Di que miArrayList contiene de

[Perro Gato Perro Perro Gato Perro Caballo]

Mi objetivo también es eliminar las copias de Dog and Cat para que mis resultados finales sean iguales

[Perro Gato Caballo]

public void removeDouble(){

int counter = 0;
for (int i = 0 ; i < animals.size(); i++) { 
    for (int j = 1+i;  j < animals.size() ; j++)  
        //don't start on the same word or you'll eliminate it.
        if ( animals.get(j).equals( animals.get(i) )  ) {
            animals.remove(animals.get(j));
           counter++;

        }                                
    } 
}

Parece que la "lógica" es correcta, pero mi código no funciona muy bien. ¿Alguien me puede ayudar un poco?

Respuestas a la pregunta(7)

Su respuesta a la pregunta