Lo del Iterator, o usar un foreach en versiones modernas, lo entiendo, pero ¿por que te pareceria mejor usar compareTo en vez de equals? Dado que solo ha de ver si son iguales, y no saber si uno es "mayor" que otro, no veo la ventaja.
De todas formas, lo más sencillo es implementar bien el equals y usar el metodo contains(o) que ya te proporciona List
.
S!
PD: Y si el problema es tener elementos repetidos, tambien se puede usar un Set que los elimina automaticamente.