Olá Kaique, o método contains
irá invocar o método implícito equals
de cada objeto para fazer a comparação. Logo uma solução seria a sobrescrita do método equals
no seu objeto com a especialização necessária, por exemplo:
public class Pessoa {
private String nome;
Pessoa(String nome){
this.nome = nome;
}
// getter e setter
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Pessoa)) {
return false;
}
final Pessoa other = (Pessoa) obj;
return this.getNome().equals(other.getNome());
}
}
public class Main {
public static void main(String[] args) {
ArrayList<Pessoa> pessoas = new ArrayList<Pessoa>();
// Adiciona várias pessoas aqui
// Instancia um novo objeto pessoa
Pessoa p = new Pessoa("Fulano");
// verifica se existe no array
// para comparação será utilizado o método
// equals sobrescrito na classe Pessoa
if(!pessoas.contains(p)){
pessoas.add(p);
}
}