- What is the key requirement for an object to be used as a key in hash based collection e.g. HashMap or Hashtable or ConcurrentHashMap?
The object should implement both equals() and hashcode() methods.
- What are immutable classes in Java? How to make immutable class in Java?
Immutable classes are classes, whose objects once created cannot be modified once created. Any modification to these immutable objects will result in another immutable object. Example classes are String and StringBuffer classes in Java.
To make an immutable class the class should be made final. All the fields in the class should also be made final and utmost care should be taken so as to ascertain that object reference must not leak during construction phase of the object.
- What happens internally when you invoke get(Key key) method in hash based collections like HashMap and Hashtable?
The following steps happen:
- The Key.hashcode() method gets invoked to get the bucket location in the array backed Hash collections.
- In the backing array the keys and values are stored in an internal class called as Entry. If there is only one Entry at the bucket location, the value is returned. If due to some reasons two keys have same hashcode (this happens), the bucket location will have two entries and it forms a sort of a linked list data structure. In that case, it traverses through the list comparing keys in each entry using keys.equals() until it return true. Once true is returned, the value is returned.
- Why should an object which is to be used as key in collection classes need to be immutable?
This is required because the hashcode() method when being called should always return the same value.
- Have you heard of ConcurrentHashMap, if so what is it?
This is an alternative to Hashtable in Java and as the name suggests, it is synchronized, thread safe and highly usable in multi-threaded programming.
- How to make HashMap synchronized in nature?
You can use Collections.synchronizedMap(HashMap). This will return a collection very much similar to Hashtable.
- What are the difference/similarities between HashSet and TreeSet?
Some of the difference are:-
- HashSet is faster than TreeSet with regards to performance.
- HashSet doesn’t preserve ordering but TreeSet does.
- HashSet allows null objects but TreeSet doesn’t.
- HashSet is backed by HashMap and TreeSet is backed by TreeMap.
Some of the similarities are:-
- Both are thread-safe and synchronized in nature.
- Both implement Set interface
Page Visitors: 995