Alguém sabe se o retorno do método contains de Collection é baseado na verificação através do operador == ou chamando equals do objeto passado?
Ou seja se ele só retorna true se nessa coleção estiver uma referência ao objeto ou se tiver uma elemento igual (método equals). Dei uma olhada na API, mas ainda assim fiquei na dúvida, e na minha implementação a interpretação errada dessa lógica acarretaria uma série de erros encadeados, por isso preciso ter certeza.
O importante do Collections é saber se contém ou não. A forma como isso é decidido pode variar de coleção para coleção. A classe AbstractCollection sua o equals, o que é uma boa indicação de qua a maioria das coleções vai se basear em equals.
Mas existem algumas que fogem a essa regra, para fornecer uma implementação mais performática, por exemplo:
O contains do TreeSet e o containsKey do TreeMap usam o método compare de sua classe, ou compareTo do Comparable dela.
O IdentityHashMap irá usar o == em seu containsKey.
A minha questão é a seguinte. Existe um algoritmo q só deve add um objeto meu nesse collection se ele já n existir nela, não a referência, mas sim um objeto igual. Eu implementei o método equals no meu objeto da forma q convinha, a minha dúvida erá só se qd eu chamasse o método contains dessa collection ele chamaria os métodos equals dos meus objetos para saber se já existe objetos nessa collection. A collection q estou usando é ArrayList.
nunca olhei como isso eh implementado mais acredito que usa equals() devido uma colecao so poder armazenar objetos e nao primitivos… a nao ser no java 5 que faz um autoboxing porem no fundo eh um objeto…