Исследование хэш-кода Float в Java

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии вы узнаете о методе hashCode() класса Float в Java. Этот метод используется для получения хэш-кода значения float. Хэш-код — это уникальное целочисленное значение, которое ассоциируется с каждым объектом в Java. В этом практическом занятии вам будет показано, как использовать метод hashCode() на различных примерах кода.

Создайте новый Java-файл

Сначала создайте новый Java-файл по пути ~/project/FloatHashcode.java с использованием следующей команды:

touch ~/project/FloatHashcode.java

Определите переменные Float

В этом шаге определите две переменные Float и инициализируйте их двумя различными значениями типа float. Также импортируйте класс Float из пакета java.lang.

import java.lang.Float;

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

Получите хэш-код с использованием метода hashCode() класса Float

В этом шаге используйте метод hashCode() класса Float, чтобы получить хэш-код переменных Float, определенных на предыдущем шаге.

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

Для компиляции и запуска файла выполните следующие команды в терминале:

javac ~/project/FloatHashcode.java
java FloatHashcode

Получите хэш-код для ввода пользователя

В этом шаге создайте программу, которая запрашивает у пользователя ввод значения float, получает хэш-код введенного значения с использованием метода hashCode() класса Float и затем выводит хэш-код в консоль.

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

Для компиляции и запуска файла выполните следующие команды в терминале:

javac ~/project/FloatHashcode.java
java FloatHashcode

Сравните хэш-коды двух значений Float

В этом шаге создайте программу, которая сравнивает хэш-коды двух значений 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");
        }
    }
}

Для компиляции и запуска файла выполните следующие команды в терминале:

javac ~/project/FloatHashcode.java
java FloatHashcode

Переопределите метод hashCode() в классе

В этом шаге мы переопределим метод hashCode() в классе. Здесь мы создадим класс MyClass с двумя переменными float a и b. Затем мы переопределим метод hashCode() в классе и вычислим хэш-код объекта по формуле (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);
    }
}

Для компиляции и запуска файла выполните следующие команды в терминале:

javac ~/project/FloatHashcode.java
java FloatHashcode

Обработка нулевых указателей

В этом шаге создайте программу, которая обрабатывает нулевые указатели при получении хэш-кода объекта 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);
    }
}

Для компиляции и запуска файла выполните следующие команды в терминале:

javac ~/project/FloatHashcode.java
java FloatHashcode

Использование Objects.hashCode() для получения хэш-кода

В этом шаге мы используем метод Objects.hashCode() для получения хэш-кода объекта Float. Этот метод возвращает хэш-код любого объекта, переданного ему, и优雅но обрабатывает нулевые указатели.

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

Для компиляции и запуска файла выполните следующие команды в терминале:

javac ~/project/FloatHashcode.java
java FloatHashcode

Использование Float.hashCode(float) для примитивных значений float

В этом шаге мы используем метод Float.hashCode(float) для получения хэш-кода примитивного значения float. Этот метод возвращает тот же хэш-код, который возвращает метод 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);
    }
}

Для компиляции и запуска файла выполните следующие команды в терминале:

javac ~/project/FloatHashcode.java
java FloatHashcode

Использование Float.floatToIntBits(float) для получения целочисленного представления float

В этом шаге мы используем метод Float.floatToIntBits(float) для получения целочисленного представления значения float. Этот метод возвращает то же целочисленное представление, которое используется для вычисления хэш-кода значения 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);
    }
}

Для компиляции и запуска файла выполните следующие команды в терминале:

javac ~/project/FloatHashcode.java
java FloatHashcode

Резюме

В этом практическом занятии вы узнали о методе hashCode() класса Float в Java. Вы узнали, как получить хэш-код значения float, переопределить метод hashCode() в классе, использовать метод Objects.hashCode(), а также обрабатывать нулевые указатели при получении хэш-кода объекта. Вы также узнали о методе floatToIntBits(float), который используется для получения целочисленного представления значения float.