Java Integer Hashcode Methode

JavaJavaBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab wird die Verwendung der hashCode(int n)-Methode der Java-Integer-Klasse behandelt. Wir werden lernen, wie für einen gegebenen ganzzahligen Wert ein eindeutiger ganzzahliger Wert erzeugt wird, der als Hash-Code bekannt ist.

Erstellen einer Java-Programmdatei

Erstellen Sie in Ihrem bevorzugten Texteditor eine Datei mit dem Namen IntegerHashcode.java im Verzeichnis ~/project.

touch ~/project/IntegerHashcode.java
touch ~/project/IntegerHashcode.java

Importieren der erforderlichen Klasse

Importieren Sie die Integer-Klasse aus dem Paket java.lang.

import java.lang.Integer;

Generieren von Hash-Codes für ganzzahlige Werte

In diesem Schritt werden wir Hash-Codes für ganzzahlige Werte mit der hashCode(int n)-Methode generieren. Wir werden eine Anwendung erstellen, die den Benutzer auffordert, einen ganzzahligen Wert einzugeben, und dann den Hash-Code-Wert für den eingegebenen Integer generiert.

import java.lang.Integer;
import java.util.Scanner;

public class IntegerHashcode {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter an integer value: ");
        int value = sc.nextInt();

        int hashValue = Integer.hashCode(value);

        System.out.println("Hash code value for " + value + " is " + hashValue);
    }
}

Im obigen Code haben wir die Scanner-Klasse aus dem Paket java.util für die Eingabe importiert. Wir fordern den Benutzer auf, einen ganzzahligen Wert einzugeben und lesen ihn mit der nextInt()-Methode der Scanner-Klasse ein. Wir generieren dann den Hash-Code-Wert für den eingegebenen Integer mit der hashCode(int n)-Methode und drucken ihn auf der Konsole mit der println()-Methode aus.

Kompilieren und Ausführen des Programms

Speichern Sie die Datei und schließen Sie sie. Kompilieren Sie die Datei IntegerHashcode.java mit dem untenstehenden Befehl.

javac IntegerHashcode.java

Führen Sie das Programm mit dem untenstehenden Befehl aus.

java IntegerHashcode

Sie werden aufgefordert, einen ganzzahligen Wert einzugeben. Geben Sie einen beliebigen ganzzahligen Wert ein und drücken Sie die Eingabetaste. Das Programm wird den Hash-Code-Wert für den eingegebenen ganzzahligen Wert generieren und ihn auf der Konsole anzeigen.

Ändern des Programms

Lassen Sie uns die Anwendung ändern, um Hash-Codes für mehrere von Benutzer eingegebene ganzzahlige Werte zu generieren.

import java.lang.Integer;
import java.util.Arrays;
import java.util.Scanner;

public class IntegerHashcode {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter number of integer values: ");
        int count = sc.nextInt();
        int[] values = new int[count];

        for (int i = 0; i < count; i++) {
            System.out.print("Enter integer value " + (i+1) + ": ");
            values[i] = sc.nextInt();
        }

        int[] hashValues = new int[count];

        for (int i = 0; i < count; i++) {
            hashValues[i] = Integer.hashCode(values[i]);
        }

        System.out.println("Entered integer values: " + Arrays.toString(values));
        System.out.println("Corresponding hash code values: " + Arrays.toString(hashValues));
    }
}

Im obigen Code haben wir eine Schleife hinzugefügt, um mehrere ganzzahlige Werte vom Benutzer zu lesen und Hash-Code-Werte für sie zu generieren. Wir speichern die ganzzahligen Werte und die Hash-Code-Werte in separaten Arrays und drucken sie auf der Konsole mit der toString()-Methode der Arrays-Klasse aus.

Kompilieren und Ausführen des geänderten Programms

Speichern Sie die Datei und schließen Sie sie. Kompilieren Sie die Datei IntegerHashcode.java erneut mit dem untenstehenden Befehl.

javac IntegerHashcode.java

Führen Sie das geänderte Programm mit dem untenstehenden Befehl aus.

java IntegerHashcode

Folgen Sie den Aufforderungen, um mehrere ganzzahlige Werte einzugeben. Das Programm wird für jeden ganzzahligen Wert Hash-Code-Werte generieren und sie auf der Konsole anzeigen.

Untersuchung von Hash-Code-Kollisionen

Eine Hash-Code-Kollision tritt auf, wenn mehrere Objekte denselben Hash-Code-Wert generieren. Obwohl die hashCode(int n)-Methode für jeden gegebenen ganzzahligen Wert eindeutige Hash-Code-Werte generiert, ist sie nicht fehlerfrei. Es besteht immer noch die Möglichkeit von Hash-Code-Kollisionen, insbesondere wenn die Hash-Code-Werte und der zugrunde liegende Algorithmus, der die Hash-Codes generiert, nicht stark genug sind.

Lassen Sie uns eine Hash-Code-Kollision mit der hashCode(int n)-Methode demonstrieren. Ändern Sie die Anwendung, indem Sie Hash-Code-Werte für eine Reihe vorgegebener ganzzahliger Werte generieren, wie unten gezeigt.

import java.lang.Integer;
import java.util.Arrays;

public class IntegerHashcode {
    public static void main(String[] args) {
        int[] values = {100, 200, 300, 400, 500};

        int[] hashValues = new int[values.length];

        for (int i = 0; i < values.length; i++) {
            hashValues[i] = Integer.hashCode(values[i]);
        }

        System.out.println("Input integer values: " + Arrays.toString(values));
        System.out.println("Corresponding hash code values: " + Arrays.toString(hashValues));
    }
}

Im obigen Code haben wir ein Array von ganzzahligen Werten vorgegeben und für jedes von ihnen Hash-Code-Werte generiert. Anschließend drucken wir sowohl die Eingabewerte als auch ihre entsprechenden Hash-Code-Werte auf der Konsole aus.

Kompilieren und Ausführen des endgültigen Programms

Speichern Sie die Datei und schließen Sie sie. Kompilieren Sie die Datei IntegerHashcode.java noch einmal mit dem untenstehenden Befehl.

javac IntegerHashcode.java

Führen Sie das endgültige Programm mit dem untenstehenden Befehl aus.

java IntegerHashcode

Sie werden feststellen, dass die Hash-Code-Werte von 100 und 200 gleich sind. Dies ist eine Hash-Code-Kollision. Obwohl Hash-Code-Kollisionen selten sind, können sie möglicherweise Probleme mit hashbasierten Sammlungen in Java verursachen.

Zusammenfassung

In diesem Lab haben wir uns mit der hashCode(int n)-Methode der Java-Integer-Klasse beschäftigt. Wir haben gelernt, wie man mit dieser Methode eindeutige Hash-Code-Werte für ganzzahlige Werte generiert. Wir haben auch gelernt, wie man Hash-Code-Kollisionen behandelt und die Grenzen von Hash-Codes in Java kennen.