Sobes.tech
Junior — Middle
110

Czy metoda equals zwróci true, jeśli porównujemy parę klucz-wartość, gdzie wartość jest null?

Firmy, w których zadano pytania
Ifellow

Odpowiedź od AI

sobes.tech AI

Метод equals в Java может вернуть true при сравнении пары ключ-значение, где значение равно null, но это зависит от реализации класса, который вы сравниваете.

Если речь идёт, например, о Map.Entry, то метод equals сравнивает ключи и значения, учитывая, что значение может быть null. В стандартной реализации AbstractMap.SimpleEntry сравнение выглядит так:

@Override
public boolean equals(Object o) {
    if (!(o instanceof Map.Entry))
        return false;
    Map.Entry<?,?> e = (Map.Entry<?,?>)o;
    return Objects.equals(key, e.getKey()) && Objects.equals(value, e.getValue());
}

Здесь Objects.equals корректно обрабатывает null значения, возвращая true, если оба значения равны null.

Пример:

Map.Entry<String, String> entry1 = new AbstractMap.SimpleEntry<>("key", null);
Map.Entry<String, String> entry2 = new AbstractMap.SimpleEntry<>("key", null);
System.out.println(entry1.equals(entry2)); // Выведет true

Таким образом, если ключи равны и оба значения null, equals вернёт true.