1
resposta

Duvida sobre o método contains usar o equals

Fiquei em dúvida sobre como o método contains usa o metodo equals, pesquisando nas classes nao achei nenhuma implementacao do metodo equals sendo usada no metodo contains, gostaria de saber porque sobrescrever o metodo equals altera o metodo contains, visto que em nenhum lugar está explicito que o metodo contains usa o método equals.

1 resposta

Eu também dei uma olhada no Eclipse a declaração do método contains e nos comentário do método ele fala que utiliza o equals: /**

 * Returns {@code true} if this list contains the specified element.
 * More formally, returns {@code true} if and only if this list contains
 * at least one element {@code e} such that
 *** {@code Objects.equals(o, e)}.**
 *
 * @param o element whose presence in this list is to be tested
 * @return {@code true} if this list contains the specified element
 */
    public boolean contains(Object o) {
        return indexOf(o) >= 0;
    }

E posteriormente ao entrar na "super implementação" da pra ver de fato que utiliza o método equals:

public boolean contains(Object o) {
        Iterator<E> it = iterator();
        if (o==null) {
            while (it.hasNext())
                if (it.next()==null)
                    return true;
        } else {
            while (it.hasNext())
                if (o.equals(it.next()))
                    return true;
        }
        return false;
    }

Espero ter ajudado! valeu