Exploración del Código Hash de Java Float

JavaBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá sobre el método hashCode() de la clase Float de Java. Este método se utiliza para obtener el código hash de un valor float. Un código hash es un valor entero único que está asociado con cada objeto en Java. Este laboratorio lo guiará a través de diferentes ejemplos de código sobre cómo utilizar el método hashCode().

Crea un nuevo archivo Java

Primero, crea un nuevo archivo Java en ~/proyecto/FloatHashcode.java utilizando el siguiente comando:

touch ~/proyecto/FloatHashcode.java

Define variables de tipo Float

En este paso, define dos variables de tipo Float y únicalas con dos valores de tipo float diferentes. Además, importa la clase Float del paquete java.lang.

import java.lang.Float;

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

Obtener el código hash utilizando el método hashCode() de Float

En este paso, utiliza el método hashCode() de la clase Float para obtener el código hash de las variables Float definidas en el paso 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(); // obtener el código hash de n1
        int hash2 = n2.hashCode(); // obtener el código hash de n2

        System.out.println("El código hash para n1 es " + hash1);
        System.out.println("El código hash para n2 es " + hash2);
    }
}

Para compilar y ejecutar el archivo, ejecuta los siguientes comandos en la terminal:

javac ~/proyecto/FloatHashcode.java
java FloatHashcode

Obtener el código hash para la entrada del usuario

En este paso, crea un programa que le pida al usuario que ingrese un valor float, obtenga el código hash de la entrada utilizando el método hashCode() de la clase Float y luego imprima el código hash en la consola.

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("Ingrese un valor de tipo float: ");
        float input = scanner.nextFloat();
        Float n = input;

        int hashCode = n.hashCode();

        System.out.println("El código hash para la entrada " + input + " es " + hashCode);
    }
}

Para compilar y ejecutar el archivo, ejecuta los siguientes comandos en la terminal:

javac ~/proyecto/FloatHashcode.java
java FloatHashcode

Comparar los códigos hash de dos valores de tipo Float

En este paso, crea un programa que compare los códigos hash de dos valores de tipo 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("Los códigos hash de n1 y n2 son iguales");
        } else {
            System.out.println("Los códigos hash de n1 y n2 no son iguales");
        }
    }
}

Para compilar y ejecutar el archivo, ejecuta los siguientes comandos en la terminal:

javac ~/proyecto/FloatHashcode.java
java FloatHashcode

Sobrescribir el método hashCode() en una clase

En este paso, vamos a sobreescribir el método hashCode() en una clase. Aquí, creamos una clase MyClass con dos variables de tipo float a y b. Luego sobreescribimos el método hashCode() en la clase y calculamos el código hash del objeto utilizando la 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("El código hash para obj es " + hash);
    }
}

Para compilar y ejecutar el archivo, ejecuta los siguientes comandos en la terminal:

javac ~/proyecto/FloatHashcode.java
java FloatHashcode

Manejar punteros nulos

En este paso, crea un programa que maneje punteros nulos mientras obtiene el código hash de un 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("El código hash para n es " + hash);
    }
}

Para compilar y ejecutar el archivo, ejecuta los siguientes comandos en la terminal:

javac ~/proyecto/FloatHashcode.java
java FloatHashcode

Usar Objects.hashCode() para obtener el código hash

En este paso, usamos el método Objects.hashCode() para obtener el código hash de un objeto Float. Este método devuelve un código hash de cualquier objeto que se le pase y maneja los punteros nulos de manera adecuada.

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("El código hash para n es " + hash);
    }
}

Para compilar y ejecutar el archivo, ejecuta los siguientes comandos en la terminal:

javac ~/proyecto/FloatHashcode.java
java FloatHashcode

Usar Float.hashCode(float) para flotantes primitivos

En este paso, usamos el método Float.hashCode(float) para obtener el código hash de un valor primitivo de tipo float. Este método devuelve el mismo código hash que devuelve el 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("El código hash para f es " + hash);
    }
}

Para compilar y ejecutar el archivo, ejecuta los siguientes comandos en la terminal:

javac ~/proyecto/FloatHashcode.java
java FloatHashcode

Usar Float.floatToIntBits(float) para obtener la representación entera de un flotante

En este paso, usamos el método Float.floatToIntBits(float) para obtener la representación entera de un valor de tipo float. Este método devuelve la misma representación entera que se utiliza para calcular el código hash de un valor de tipo 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("La representación entera de f es " + intBits);
    }
}

Para compilar y ejecutar el archivo, ejecuta los siguientes comandos en la terminal:

javac ~/proyecto/FloatHashcode.java
java FloatHashcode

Resumen

En este laboratorio, aprendiste sobre el método hashCode() de la clase Float en Java. Aprendiste cómo obtener el código hash de un valor de tipo float, cómo sobrescribir el método hashCode() en una clase, cómo usar el método Objects.hashCode(), y cómo manejar punteros nulos mientras se obtiene el código hash de un objeto. También aprendiste sobre el método floatToIntBits(float), que se utiliza para obtener la representación entera de un valor de tipo float.