Exemplo

List list = new ArrayList();
...

if (!list.contains(someObject)) {
...
list.add(someObject);
...
}

Solução
No exemplo fornecido, o método "contains" da Lista fará uma procura linear, que pode ser cara se a lista for grande. Se for alterado para set, não será necessário chamar contains, já que Set garante exclusividade. Alteração sugerida:


Set set = new HashSet();
...
set.add(someObject);
...


Se a ordem de inserção for importante, utilize LinkHashSet em vez de HashSet. Alteração sugerida:


Set set = new LinkedHashSet();
...
set.add(someObject);
...