Java / Map and its implementations
How hash collision is handled in HashMap?
Prior to Java8, map implementations such as Hashmap handles collision by chaining using a linked list when multiple elements (key) end up in same bucket location. This may degrade the performance from O(1) (one bucket location one key) to O(n) for that particular bucket.
In Java8, to address the performance degrade due to frequent collision, Java8 has started using a balanced tree instead of linked list for storing collided entries to improve performance from O(n) to O(log n).
Java8 still uses Linked list for collision however it converts to balanced tree when number of elements in the same bucket exceeds the TREEIFY_THRESHOLD constant defined by Hashmap. The TREEIFY_THRESHOLD value is 8 so when number of elements exceed 8 linked list switches to balanced tree.
More Related questions...