Обратите внимание, что Hashtable
более или менее устарела и была заменена на HashMap
. Этот использует hash & (table.length-1)
для достижения той же цели.
Он также выполняет некоторое сдвигание битов до того, как можно увидеть здесь . Это связано с плохими реализациями метода hashCode()
, которые возвращают числа с низким разнесением.
Попробуйте c! = Null в вашем операторе if. Вы сравниваете не сами объекты, вы сравниваете их ссылки.
!c.equals(null)
Эта строка вызывает метод equals для c, и если c имеет значение null, вы получите эту ошибку, потому что вы не можете вызывать какие-либо методы для null. Вместо этого вы должны использовать
c != null
Используйте c == null
, поскольку вы сравниваете ссылки , а не объекты.
Использовать c == null
Метод equals (обычно) ожидает аргумент типа customer и может вызывать некоторые методы объекта. Если этот объект имеет значение null, вы получите исключение NullPointerException.
Также c может иметь значение null, а вызов c.equals может вызывать исключение независимо от переданного объекта
Скорее всего, в этом случае объект c имеет значение NULL.
Возможно, вы захотите переопределить реализацию equals по умолчанию для клиента, если вам нужно вести себя по-другому.
Также убедитесь, что переданный объект не является нулевым до вызова функций на нем.