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.



