Buenas,
Para poder usar el método contains correctamente tienes que sobrescribir el método equals y getHashCode con las particularidades de la clase.
Una vez sobrescritos los métodos, puedes hacerlo a mano o usando algunas de las estructuras de java:
Código Java:
Ver originalArrayList<ClaseObjeto> lista = new ArrayList<ClaseObjeto>();
//Aquí lo llenas de objetos
//..............
//Al utilizar un HashSet se eliminan todos los duplicados y luego lo conviertes de nuevo a una lista
lista = new ArrayList<ClaseObjeto>(new HashSet<ClaseObjeto>(lista));
Obviamente, si la lista es muy grande probablemente este no sea el mejor método y tengas que implementar tu propia forma, pero para poder usar el método contains tienes que hacer lo que te he dicho.
Un saludo.