what must be hashcode of null objects in Java?

hashcode, hashmap, java, object

Solution

How would you calculate `hashCode` of an object that doesn't even exists? When `p2` is `null`, invoking any method on it will throw a `NPE`. That isn't giving you any particular value of a hashCode.

`Objects.hashCode()` is just a wrapper method, which performs a pre-check for `null` values, and for reference that is not `null`, it returns the same value as `p2.hashCode()` as in this case. Here's the source code of the method:

public static int hashCode(Object o) {
    return o != null ? o.hashCode() : 0;
}

Problem

According to a comment from this post, `hascode` of `null objects` can `throw NPE` or a value of `zero`. This is implementation specific. but within the same implementation, why does `Objects.hashcode` and `hascode(instance)` return different values. for ex: ``` public class EqualsTesting { public static void main(String[] args){ String p1 =null; String p2 = null; System.out.println(Objects.hashCode(p1)); System.out.println(p2.hashCode()); } } ``` Output: ``` 0 Exception in thread "main" java.lang.NullPointerException at BinaryTrees.EqualsTesting.main(EqualsTesting.java:14) ``` If this is the case, will this not affect the `key look-up` in `HashMap` where `null Key-value pairs` are allowed. (It might either `hash` to `bucket 0` or `throw a NPE`)

Original source

Related problems