Java Float Hashcode Exploration

JavaBeginner
Jetzt üben

Einführung

In diesem Lab werden Sie die hashCode()-Methode in der Float-Klasse von Java kennenlernen. Diese Methode wird verwendet, um den Hash-Code eines float-Werts zu erhalten. Ein Hash-Code ist ein eindeutiger ganzzahliger Wert, der mit jedem Objekt in Java assoziiert ist. In diesem Lab werden Sie durch verschiedene Codebeispiele geführt, die zeigen, wie die hashCode()-Methode verwendet werden kann.

Erstellen einer neuen Java-Datei

Erstellen Sie zunächst eine neue Java-Datei unter ~/project/FloatHashcode.java mit dem folgenden Befehl:

touch ~/project/FloatHashcode.java

Definieren von Float-Variablen

In diesem Schritt definieren Sie zwei Float-Variablen und initialisieren sie mit zwei unterschiedlichen float-Werten. Importieren Sie auch die Float-Klasse aus dem java.lang-Paket.

import java.lang.Float;

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

Den Hash-Code mithilfe der hashCode()-Methode von Float erhalten

In diesem Schritt verwenden Sie die hashCode()-Methode der Float-Klasse, um den Hash-Code der im vorherigen Schritt definierten Float-Variablen zu erhalten.

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);
    }
}

Um die Datei zu kompilieren und auszuführen, führen Sie die folgenden Befehle im Terminal aus:

javac ~/project/FloatHashcode.java
java FloatHashcode

Hash-Code für Benutzereingabe erhalten

In diesem Schritt erstellen Sie ein Programm, das den Benutzer auffordert, einen float-Wert einzugeben, den Hash-Code der Eingabe mithilfe der hashCode()-Methode der Float-Klasse erhält und dann den Hash-Code in der Konsole ausgibt.

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);
    }
}

Um die Datei zu kompilieren und auszuführen, führen Sie die folgenden Befehle im Terminal aus:

javac ~/project/FloatHashcode.java
java FloatHashcode

Vergleiche die Hash-Codes von zwei Float-Werten

In diesem Schritt erstellen Sie ein Programm, das die Hash-Codes von zwei Float-Werten vergleicht.

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");
        }
    }
}

Um die Datei zu kompilieren und auszuführen, führen Sie die folgenden Befehle im Terminal aus:

javac ~/project/FloatHashcode.java
java FloatHashcode

Überschreibe die hashCode()-Methode in einer Klasse

In diesem Schritt werden wir die hashCode()-Methode in einer Klasse überschreiben. Hier erstellen wir eine MyClass-Klasse mit zwei float-Variablen a und b. Anschließend überschreiben wir die hashCode()-Methode in der Klasse und berechnen den Hash-Code des Objekts mit der Formel (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);
    }
}

Um die Datei zu kompilieren und auszuführen, führen Sie die folgenden Befehle im Terminal aus:

javac ~/project/FloatHashcode.java
java FloatHashcode

Nullzeiger behandeln

In diesem Schritt erstellen Sie ein Programm, das Null-Pointer behandelt, wenn der Hash-Code eines Float-Objekts abgerufen wird.

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);
    }
}

Um die Datei zu kompilieren und auszuführen, führen Sie die folgenden Befehle im Terminal aus:

javac ~/project/FloatHashcode.java
java FloatHashcode

Verwenden Sie Objects.hashCode(), um den Hash-Code zu erhalten

In diesem Schritt verwenden wir die Objects.hashCode()-Methode, um den Hash-Code eines Float-Objekts zu erhalten. Diese Methode gibt einen Hash-Code für jedes an sie übergebene Objekt zurück und behandelt Null-Pointer 优雅地。

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);
    }
}

Um die Datei zu kompilieren und auszuführen, führen Sie die folgenden Befehle im Terminal aus:

javac ~/project/FloatHashcode.java
java FloatHashcode

Verwenden Sie Float.hashCode(float) für primitive Floats

In diesem Schritt verwenden wir die Float.hashCode(float)-Methode, um den Hash-Code eines primitiven float-Werts zu erhalten. Diese Methode liefert denselben Hash-Code wie die floatToIntBits(float)-Methode.

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);
    }
}

Um die Datei zu kompilieren und auszuführen, führen Sie die folgenden Befehle im Terminal aus:

javac ~/project/FloatHashcode.java
java FloatHashcode

Verwenden Sie Float.floatToIntBits(float), um die ganzzahlige Darstellung eines Floats zu erhalten

In diesem Schritt verwenden wir die Float.floatToIntBits(float)-Methode, um die ganzzahlige Darstellung eines float-Werts zu erhalten. Diese Methode liefert dieselbe ganzzahlige Darstellung, die zur Berechnung des Hash-Codes eines float-Werts verwendet wird.

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);
    }
}

Um die Datei zu kompilieren und auszuführen, führen Sie die folgenden Befehle im Terminal aus:

javac ~/project/FloatHashcode.java
java FloatHashcode

Zusammenfassung

In diesem Lab haben Sie die hashCode()-Methode der Float-Klasse in Java kennengelernt. Sie haben gelernt, wie man den Hash-Code eines float-Werts erhält, die hashCode()-Methode in einer Klasse überschreibt, die Objects.hashCode()-Methode verwendet und Null-Pointer behandelt, wenn der Hash-Code eines Objekts abgerufen wird. Sie haben auch die floatToIntBits(float)-Methode kennengelernt, die zur Erhaltung der ganzzahligen Darstellung eines float-Werts verwendet wird.