Sobes.tech
Назад к вопросам
Junior — Middle
64

Вернёт ли метод equals true, если сравнивать пару ключ-значение, где значение равно null?

Компании, где спрашивали
Ifellow

Ответ от нейросети

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.