Java Efetivo Essencial - HashCode()

Sobrescreva semper o método Hashcode ao sobrescrever o método equals



Esta é uma série baseada no entendimento de tópicos relacionados ao livro com foco no resumo.

엔텐덴도

Equals(), Hashcode() 등이 Object 클래스로 분류되는 방법을 확인하십시오.
Esse método é utilizado especialmente em estrutura de dados do Java, como na api de Collections e Map.
Equals() 및 Hashcode() 또는 Hashcode() 또는 Hashcode() 메서드와 대조되는 모든 방법은 Java에서 작동하지 않는 기능에 함축되어 있습니다.

콘트라토 게랄

기존 알고리즘은 Hashcode() 방법에 따라 다른 방식으로 처리되어야 합니다.
  • executado repetidas vezes para o mesmo objeto deve semper retornar o mesmo valor desde que nenhum dos dados usados ​​no equals seja modificado에 대한 Semper que um método 해시코드;
  • Se dois objetos forem iguais através do método는 então o método 해시코드 desses objetos deve retornar o mesmo valor와 같습니다.
  • 개체는 equals()와 다른 방법이 없으며, hashcode()를 수행하기 위한 결과가 필요하지 않으며, 다른 작업과 관련하여 중요한 프로그래머 입력자에서 결과가 다르거나 테이블에서 테이블을 제거할 때 해시가 자바에서 사용되는 것과 다를 수 있습니다.

  • 코모 데베리아?

    정확한 개체는 Equals() 메서드를 사용하지 않고 개체를 포함합니다.
    Mesma ordem dos campos possibilita uma função hash melhor를 활용하십시오.
    다음 계산법은 Hash가 추천할 만한 가치가 있고 가치가 가장 높으며 예를 들면 다음과 같습니다.

    @Override
    public int hashCode() {
      int result = nome.hashCode();
      result = 31 * result + email.hashCode();
      result = 31 * result + nascimento.hashCode();
      return result;
    }
    


    Google에서 Guava를 추천하고 Objects do Java를 추천하는 등의 계산서나 계산서가 존재합니다.
    Ele traz apenas um alerta sobre o método da classe Objects em termos de performance.

    @Override
    public int hashCode() {
        return Objects.hash(nome, email, nascimento);
    }
    


    Se trabalha com class Imutáveis ​​uma abordagem seria o armazenamento do hashcode em cache para não ficar recalculando toda vez que o método for utilizado.

    결론

    O livro ressalta a importância de utilizarmos todos os campos que são significativos para identificar o objeto, ou seja, mesmo que sejam muitos devemos manter eles e garantir que estes sejam presentes.

    Entenda que semper que sobrescrever um método será necessário sobrescrever o outro para que seu programa funcione corretamente.
    Obdeça na sobrescrita as regras que esse esse método deve atender.

    Algumas IDEs facilitam isso para o desenvolvedor como é o caso do Intellij que já possui uma opção em conjunto de sobrescrita dos dois itens.

    좋은 웹페이지 즐겨찾기