Назад к вопросам
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.