Exploração do Hashcode de Float em Java

JavaBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá sobre o método hashCode() na classe Float do Java. Este método é usado para obter o código hash de um valor float. Um código hash é um valor inteiro único que está associado a cada objeto em Java. Este laboratório irá guiá-lo através de diferentes exemplos de código sobre como usar o método hashCode().

Criar um novo arquivo Java

Primeiro, crie um novo arquivo Java em ~/project/FloatHashcode.java usando o seguinte comando:

touch ~/project/FloatHashcode.java

Definir variáveis Float

Nesta etapa, defina duas variáveis Float e inicialize-as com dois valores float diferentes. Além disso, importe a classe Float do pacote java.lang.

import java.lang.Float;

public class FloatHashcode {
    public static void main(String[] args) {
        Float n1 = 2.3456F;
        Float n2 = -4.567F;
    }
}

Obter o código hash usando o método hashCode() de Float

Nesta etapa, use o método hashCode() da classe Float para obter o código hash das variáveis Float definidas na etapa anterior.

import java.lang.Float;

public class FloatHashcode {
    public static void main(String[] args) {
        Float n1 = 2.3456F;
        Float n2 = -4.567F;

        int hash1 = n1.hashCode(); // get hash code of n1
        int hash2 = n2.hashCode(); // get hash code of n2

        System.out.println("Hash code for n1 is " + hash1);
        System.out.println("Hash code for n2 is " + hash2);
    }
}

Para compilar e executar o arquivo, execute os seguintes comandos no terminal:

javac ~/project/FloatHashcode.java
java FloatHashcode

Obter código hash para entrada do usuário

Nesta etapa, crie um programa que solicita ao usuário que insira um valor float, obtém o código hash da entrada usando o método hashCode() da classe Float e, em seguida, imprime o código hash no console.

import java.util.Scanner;
import java.lang.Float;

public class FloatHashcode {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Enter a float value: ");
        float input = scanner.nextFloat();
        Float n = input;

        int hashCode = n.hashCode();

        System.out.println("Hash code for the input " + input + " is " + hashCode);
    }
}

Para compilar e executar o arquivo, execute os seguintes comandos no terminal:

javac ~/project/FloatHashcode.java
java FloatHashcode

Comparar códigos hash de dois valores Float

Nesta etapa, crie um programa que compara os códigos hash de dois valores Float.

import java.lang.Float;

public class FloatHashcode {
    public static void main(String[] args) {
        Float n1 = 2.3456F;
        Float n2 = 2.3456F;

        int hash1 = n1.hashCode();
        int hash2 = n2.hashCode();

        if (hash1 == hash2) {
            System.out.println("The hash codes of n1 and n2 are equal");
        } else {
            System.out.println("The hash codes of n1 and n2 are not equal");
        }
    }
}

Para compilar e executar o arquivo, execute os seguintes comandos no terminal:

javac ~/project/FloatHashcode.java
java FloatHashcode

Sobrescrever o método hashCode() em uma classe

Nesta etapa, vamos sobrescrever o método hashCode() em uma classe. Aqui, criamos uma classe MyClass com duas variáveis float, a e b. Em seguida, sobrescrevemos o método hashCode() na classe e calculamos o código hash do objeto usando a fórmula (31 * Float.floatToIntBits(a)) + Float.floatToIntBits(b).

import java.lang.Float;

class MyClass {
    float a;
    float b;

    public MyClass(float a, float b) {
        this.a = a;
        this.b = b;
    }

    @Override
    public int hashCode() {
        return (31 * Float.floatToIntBits(a)) + Float.floatToIntBits(b);
    }
}

public class FloatHashcode {
    public static void main(String[] args) {
        MyClass obj = new MyClass(2.3456F, -4.567F);

        int hash = obj.hashCode();

        System.out.println("Hash code for obj is " + hash);
    }
}

Para compilar e executar o arquivo, execute os seguintes comandos no terminal:

javac ~/project/FloatHashcode.java
java FloatHashcode

Lidar com ponteiros nulos

Nesta etapa, crie um programa que lida com ponteiros nulos ao obter o código hash de um objeto Float.

import java.lang.Float;

public class FloatHashcode {
    public static void main(String[] args) {
        Float n = null;

        int hash = (n != null) ? n.hashCode() : 0;

        System.out.println("Hash code for n is " + hash);
    }
}

Para compilar e executar o arquivo, execute os seguintes comandos no terminal:

javac ~/project/FloatHashcode.java
java FloatHashcode

Usar Objects.hashCode() para obter o código hash

Nesta etapa, usamos o método Objects.hashCode() para obter o código hash de um objeto Float. Este método retorna um código hash de qualquer objeto passado para ele e lida com ponteiros nulos de forma elegante.

import java.lang.Float;
import java.util.Objects;

public class FloatHashcode {
    public static void main(String[] args) {
        Float n = null;

        int hash = Objects.hashCode(n);

        System.out.println("Hash code for n is " + hash);
    }
}

Para compilar e executar o arquivo, execute os seguintes comandos no terminal:

javac ~/project/FloatHashcode.java
java FloatHashcode

Usar Float.hashCode(float) para floats primitivos

Nesta etapa, usamos o método Float.hashCode(float) para obter o código hash de um valor float primitivo. Este método retorna o mesmo código hash que é retornado pelo método floatToIntBits(float).

import java.lang.Float;

public class FloatHashcode {
    public static void main(String[] args) {
        float f = 2.3456F;

        int hash = Float.hashCode(f);

        System.out.println("Hash code for f is " + hash);
    }
}

Para compilar e executar o arquivo, execute os seguintes comandos no terminal:

javac ~/project/FloatHashcode.java
java FloatHashcode

Usar Float.floatToIntBits(float) para obter a representação inteira de um float

Nesta etapa, usamos o método Float.floatToIntBits(float) para obter a representação inteira de um valor float. Este método retorna a mesma representação inteira que é usada para calcular o código hash de um valor float.

import java.lang.Float;

public class FloatHashcode {
    public static void main(String[] args) {
        float f = 2.3456F;

        int intBits = Float.floatToIntBits(f);

        System.out.println("Integer representation of f is " + intBits);
    }
}

Para compilar e executar o arquivo, execute os seguintes comandos no terminal:

javac ~/project/FloatHashcode.java
java FloatHashcode

Resumo

Neste laboratório, você aprendeu sobre o método hashCode() da classe Float em Java. Você aprendeu como obter o código hash de um valor float, sobrescrever o método hashCode() em uma classe, usar o método Objects.hashCode() e lidar com ponteiros nulos ao obter o código hash de um objeto. Você também aprendeu sobre o método floatToIntBits(float), que é usado para obter a representação inteira de um valor float.