Search code examples
javahashmap

Key existence check in HashMap


Is checking for key existence in HashMap always necessary?

I have a HashMap with say a 1000 entries and I am looking at improving the efficiency. If the HashMap is being accessed very frequently, then checking for the key existence at every access will lead to a large overhead. Instead if the key is not present and hence an exception occurs, I can catch the exception. (when I know that this will happen rarely). This will reduce accesses to the HashMap by half.

This might not be a good programming practice, but it will help me reduce the number of accesses. Or am I missing something here?

[Update] I do not have null values in the HashMap.


Solution

  • Do you ever store a null value? If not, you can just do:

    Foo value = map.get(key);
    if (value != null) {
        ...
    } else {
        // No such key
    }
    

    Otherwise, you could just check for existence if you get a null value returned:

    Foo value = map.get(key);
    if (value != null) {
        ...
    } else {
        // Key might be present...
        if (map.containsKey(key)) {
           // Okay, there's a key but the value is null
        } else {
           // Definitely no such key
        }
    }