Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida no Ex. 2 da Aula 6 - Threads

Porque quando faço o print do hashcode dentro do método run() de ProduzMensagens o hashcode de mensagens é alterado cada vez que adiciona uma nova mensagem? Não deveria ser o mesmo hashcode? Já que a ArrayList é passada por referencia?

@Override
    public void run() {
        for (int i = comeco; i < fim; i++) {
            mensagens.add("Mensagem "  + i);

        }
        System.out.println("hashcode dentro de ProduzMensagens" + mensagens.hashCode());

    }
2 respostas
solução!

Oi Helder, tudo bem? Respondendo sua pergunta. O hashCode é um código calculado baseado nas propriedades do abjeto, no caso do ArrayList, o calculo inclue os elementos dentro da lista, o que faz bastante sentido, não acha?

Perceba que podemos fazer com que o Eclipse gere o método hashCode e que quando estamos neste menu de opções, podemos selecionar quais propriedades/atributos do objeto farão parte do calculo, sendo assim, se uma propriedade muda, o calculo é refeito para refletir essa mudança, entende?

Espero ter ajudado. Bons Estudos.

Entendi. Realmente faz sentido para a ArrayList. Não tinha abstraído essa possibilidade pois imaginava o hashcode como algo imutável. Pensava que para fazer o cálculo era necessário utilizar uma característica exclusiva do objeto como um CPF para um Cliente. Obrigado Wanderson.