You are here : Home / Core Java Tutorials / Collection framework Tutorial in java / Java Interview Questions and answers
This is set of most complete collection interview questions and answers consisting of 100 questions. It's time to impress interviewer, crack collection interview questions in java. Best set of collection interview questions, I have tried to cover almost all the possible collection questions which could be framed in an interview by interviewer.
Collection interview Question 1. What is Collection framework in java?
Answer. It’s the basic Collection framework interview question. Freshers must know about this. java.util.Collection is the root interface in the hierarchy of Java Collection framework in java.
The JDK does not provide any classes which directly implements this interface, but it provides classes which are implementations of more specific subinterfaces like Set and List in java.
HashSet, CopyOnWriteArraySet, LinkedHashSet, TreeSet, ConcurrentSkipListSet, EnumSet classes implements Set interface.
Also read >
COLLECTION - Top 100 important interview OUTPUT questions and answers in java, Set-3 > Q75- Q100
Collection interview Question 2. Which interfaces and classes are most frequently used in Collection framework in java?
Answer. This collection framework interview question will test your practical knowledge. Freshers may get away by answering few interface and classes but experienced developers must answer this question in detail.
Most frequently used interface in Collection framework are >
Most frequently used classes in Collection framework are >
HashMap, Hashtable, ConcurrentHashMap, LinkedHashMap, TreeMap, ConcurrentSkipListMap classes implements Map interface.
Collection interview Question 3. What are subinterfaces of Collection interface in java? Is Map interface also a subinterface of Collection interface in java?
It’s important to note Map interface is a member of the Java Collections Framework, but it does not implement Collection interface in java.
Answer. This is very important collection framework interview question in java.
Property
|
java.util.ArrayList
|
java.util.LinkedList
| |
1
|
Structure
|
java.util.ArrayList is index based structure in java.
|
A java.util.LinkedList is a data structure consisting of a group of nodes which together represent a sequence.
node is composed of a data and a reference (in other words, a link) to the next node in the sequence in java.
|
2
|
Resizable
|
ArrayList is Resizable-array in java.
|
New node is created for storing new element in LinkedList in java.
|
3
|
Initial capacity
|
java.util.ArrayList is created with initial capacity of 10 in java.
|
For storing every element node is created in LinkedList, so linkedList’s initial capacity is 0 in java.
|
4
|
Ensuring Capacity/ resizing.
|
ArrayList is created with initial capacity of 10.
ArrayList’s size is increased by 50% i.e. after resizing it’s size become 15 in java.
|
For storing every element node is created, so linkedList’s initial capacity is 0, it’s size grow with addition of each and every element in java.
|
5
|
RandomAccess interface
|
ArrayList implements RandomAccess(Marker interface) to indicate that they support fast random access (i.e. index based access) in java.
|
LinkedList does not implement RandomAccess interface in java.
|
6
|
AbstractList and AbstractSequentialList
|
ArrayList extends AbstractList (abstract class) which provides implementation to List interface to minimize the effort required to implement this interface backed by RandomAccess interface.
|
LinkedList extends AbstractSequentialList (abstract class), AbstractSequentialList extends AbstractList.
In LinkedList, data is accessed sequentially, so for obtaining data at specific index, iteration is done on nodes sequentially in java.
|
7
|
How get(index) method works?
(Though difference has been discussed briefly in above 2 points but in this in point we will figure difference in detail.)
|
Get method of ArrayList directly gets element on specified index. Hence, offering O(1) complexity in java.
|
Get method of LinkedList iterates on nodes sequentially to get element on specified index. Hence, offering O(n) complexity in java.
|
8
|
When to use
|
Use ArrayList when get operations is more frequent than add and remove operations in java.
|
Use LinkedList when add and remove operations are more frequent than get operations in java.
|
For more detail like complexity comparison of method please read : ArrayList vs LinkedList in java
Answer. Another very important collection framework interview question to differentiate between ArrayList and Vector in java.
Property
|
java.util.ArrayList
|
java.util.Vector
| |
1
|
synchronization
|
java.util.ArrayList is not synchronized (because 2 threads on same ArrayList object can access it at same time).
In the program we will implement our own arrayList in java.
|
java.util.Vector is synchronized (because 2 threads on same Vector object cannot access it at same time).
In the program we will implement our own vector in java.
|
2
|
Performance
|
ArrayList is not synchronized, hence its operations are faster as compared to Vector in java.
|
Vector is synchronized, hence its operations are slower as compared to ArrayList in java.
If we are working not working in multithreading environment jdk recommends us to use ArrayList.
|
3
|
Enumeration
|
Enumeration is fail-fast, means any modification made to ArrayList during iteration using Enumeration will throw ConcurrentModificationException in java.
|
Enumeration is fail-safe, means any modification made to Vector during iteration using Enumeration don’t throw any exception in java.
|
4
|
Introduced in which java version
|
ArrayList was introduced in second version of java i.e. JDK 2.0
|
Vector was introduced in first version of java i.e. JDK 1.0
But it was refactored in java 2 i.e. JDK 1.2 to implement the List interface, hence making it a member of member of the Java Collections Framework.
|
5
|
Ensuring Capacity/ resizing.
|
ArrayList is created with initial capacity of 10.
When its full size is increased by 50% i.e. after resizing it’s size become 15 in java.
|
Vector is created with initial capacity of 10.
Vector’s size is increased by 100% i.e. after resizing it’s size become 20 in java.
|
6
|
Custom implementation
|
For more detail like complexity comparison of method please read: ArrayList vs Vector- Similarity and Differences in java
Answer. Another very very important collection framework interview question to differentiate between List and Set in java.
Property
|
java.util.List
|
java.util.Set
| |
1
|
Insertion order
|
java.util.List is ordered collection it maintain insertion order in java.
|
Most of the java.util.Set implementation does not maintain insertion order.
HashSet does not maintains insertion order in java.
Thought LinkedHashSet maintains insertion order in java.
TreeSet is sorted by natural order in java.
|
2
|
Duplicate elements
|
List allows to store duplicate elements in java.
|
Set does not allow to store duplicate elements in java.
|
3
|
Null keys
|
List allows to store many null keys in java.
|
Most of the Set implementations allow to add only one null in java.
TreeSet does not allow to add null in java.
|
4
|
Getting element on specific index
|
List implementations provide get method to get element on specific index in java.
ArrayList, Vector, copyOnWriteArrayList and LinkedList provides -
get(int index)
Method returns element on specified index.
Get method directly gets element on specified index. Hence, offering O(1) complexity.
|
Set implementations does not provide any such get method to get element on specified index in java.
|
5
|
Implementing classes
|
HashSet, CopyOnWriteArraySet, LinkedHashSet, TreeSet, ConcurrentSkipListSet, EnumSet classes implements Set interface in java.
| |
6
|
listIterator
|
listIterator method returns listIterator to iterate over elements in List in java.
listIterator provides additional methods as compared to iterator like
hasPrevious(), previous(), nextIndex(), previousIndex(), add(E element), set(E element)
|
Set does not provide anything like listIterator. It simply return Iterator in java.
|
7
|
Structure and resizable
|
List are Resizable-array implementation of the java.util.List interface in java.
|
Hence, structure is map based and resizing depends on Map implementation.
|
8
|
Index based structure /RandomAccess
|
As ArrayList uses array for implementation it is index based structure, hence provides random access to elements.
|
Set is not index based structure at all in java.
|
For more detail read : List vs Set - Similarity and Differences in java
Answer. This collection framework interview question is tests your knowledge of iterating over different collection framework classes in java.
java.util.ListIterator
|
java.util.Iterator
| |
1
|
hasPrevious() method returns true if this listIterator has more elements when traversing the list in the reverse direction.
|
No such method in java.util.Iterator.
|
2
|
previous() returns previous element in iteration (traversing in backward direction).
if the iteration has no previous elements than NoSuchElementException is thrown.
|
No such method in java.util.Iterator.
|
3
|
nextIndex() method returns the index of the element that would be returned by a subsequent call to next() method. If listIterator is at the end of the list than method returns size of list.
|
No such method in java.util.Iterator.
|
4
|
previousIndex() method returns the index of the element that would be returned by a subsequent call to previous() method. If listIterator is at the start of the list than method returns -1.
|
No such method in java.util.Iterator.
|
5
|
add(E element)
Method inserts the specified element into the list.
The element is inserted immediately before the element that would be returned by next (So, subsequent call to next would be unaffected), if any, and after the element that would be returned by previous (So,subsequent call to previous would return the new element), if any.
If the list does not contain any element than new element will be the sole element in the list.
|
No such method in java.util.Iterator.
|
6
|
set(E element)
Method replaces the last element returned by next() or previous() method with the specified element. This call can be made only if neither remove nor add have been called after the last call to next or previous.
If call to set() method is followed up by any call made to remove() or add() method after next() or previous() than UnsupportedOperationException is thrown.
|
No such method in java.util.Iterator.
|
7
|
All the implementations of List interface like ArrayList, LinkedList, Vector, CopyOnWriteArrayList classes returns listIterator.
|
All Implementation classes of Collection interface’s subinterfaces like Set and List return iterator.
|
For more detail read : Iterator vs ListIterator - Similarity and Differences in java
Answer. This is another very important collection framework interview question.In real projects you must have used both Collection and Collections but what is the difference between two of them in java?
The JDK does not provide any classes which directly implements java.util.Collection interface, but it provides classes such as ArrayList, LinkedList, vector, HashSet, EnumSet, LinkedHashSet, TreeSet, CopyOnWriteArrayList, CopyOnWriteArraySet, ConcurrentSkipListSet which implements more specific subinterfaces like Set and List in java.
java.util.Collections is a utility class which consists of static methods that operate on or return Collection in java.
java.util.Collections provides method like >
- shuffle method for shuffling elements of List in java.
- unmodifiableCollection, unmodifiableSet, unmodifiableList, unmodifiableMap methods for making List, Set and Map unmodifiable in java.
- min method to return smallest element in Collection in java.
- max method to return smallest element in Collection.
- sort method for sorting List.
- synchronizedCollection, synchronizedSet, synchronizedList, synchronizedMap methods for synchronizing List, Set and Map respectively in java.
Additionally you must know that java.util.Collection and java.util.Collections both were introduced in second version of java i.e. in JDK 2.0.
Collection interview Question 9. What are core classes and interfaces in java.util.List hierarchy in java?
Answer. Freshers must know core classes in List hierarchy but experienced developers must be able to explain this java.util.List hierarchy in detail.
java.util.ArrayList, java.util.LinkedList, java.util.Vector, java.util.concurrent.CopyOnWriteArrayList classes implements java.util.List interface.
Also some abstract classes like java.util.AbstractCollection, java.util.AbstractList and java.util.AbstractSequentialList have been mentioned in hierarchy.
Collection interview Question 10. What are core classes and interfaces in java.util.Set hierarchy?
Answer. Freshers must know core classes in Set hierarchy but experienced developers must be able to explain this java.util.Set hierarchy in detail.
java.util.HashSet, java.util.concurrent.CopyOnWriteArraySet, java.util.LinkedHashSet, java.util.TreeSet, java.util.concurrent.ConcurrentSkipListSet, java.util.EnumSet classes implements java.util.Set interface.
Also some abstract classes like java.util.Dictionary and java.util.AbstractSet and java.util.AbstractCollection have been mentioned in hierarchy.
Collection interview Question 11. What are core classes and interfaces in java.util.Map hierarchy?
Answer. Freshers must know core classes in Map hierarchy but experienced developers must be able to explain this java.util.Map hierarchy in detail.
java.util.Map interface extends java.util.Collection interface.
java.util.HashMap, java.util.Hashtable, java.util.concurrent.ConcurrentHashMap, java.util.LinkedHashMap, java.util.TreeMap, java.util.concurrent.ConcurrentSkipListMap, java.util.IdentityHashMap, java.util.WeakHashMap, java.util.EnumMap classes implements java.util.Map interface.
Also some abstract classes like java.util.Dictionary and java.util.AbstractMap have been mentioned in hierarchy.
Answer. Experienced developers must be well versed to answer this collection framework interview question in java.
Differences between java.util.Iterator and java.util.Enumeration in java >
Property
|
java.util.Enumeration
|
java.util.Iterator
| |
1
|
Remove elements during iteration
|
java.util.Enumeration doesn’t allows to remove elements from collection during iteration in java.
|
java.util.Iterator allows to remove elements from collection during iteration by using remove() method in java.
|
2
|
Improved naming conventions in Iterator
|
nextElement()
Method Returns the next element of this enumeration if this enumeration object has at least one more element to provide.
hasMoreElements()
returns true if enumeration contains more elements.
|
nextElement() has been changed to next() in Iterator.
And
hasMoreElements() has been changed to hasNext() in Iterator.
|
3
|
Introduced in
which java
version
|
Enumeration was introduced in first version
of java i.e. JDK 1.0
|
Iterator was introduced in second version
of java i.e. JDK 2.0
Iterator was introduced to replace Enumeration in the Java Collections Framework.
|
4
|
Recommendation
|
Java docs recommends iterator over enumeration.
|
Java docs recommends iterator over enumeration.
|
5
|
Enumeration and Iterator over Vector
|
Enumeration returned by Vector is fail-safe, means any modification made to Vector during iteration using Enumeration don’t throw any exception in java.
|
Iterator returned by Vector are fail-fast, means any structural modification made to ArrayList during iteration will throw ConcurrentModificationException in java.
|
For more detail read : Iterator vs Enumeration - Differences and similarities in java
Collection interview Question 13. How do we override equals and hashcode method in java, write a code to use Employee as key in HashMap in java? (Important)
Answer. This is one of the most important collection framework interview question in java. Prepare for this question properly. Freshers must know the concept how to override equals and hashcode method but experienced developers must be able to write the java code to override equals and hashcode neatly. We will override equals() and hashCode() like this -
By overriding equals() and hashCode() method we could use custom object as key in HashMap.
1) Check whether obj is null or not.
if(obj==null) //If obj is null, return without comparing obj & Employee class.
2) check whether obj is instance of Employee class or not.
if(this.getClass()!=obj.getClass()) //identifies whether obj is instance of Employee class or not.
3) Then, type cast obj into employee instance.
Employee emp=(Employee)obj; //type cast obj into employee instance.
@Override
public boolean equals(Object obj){
if(obj==null)
return false;
if(this.getClass()!=obj.getClass())
return false;
Employee emp=(Employee)obj;
return (emp.id==this.id || emp.id.equals(this.id))
&& (emp.name==this.name || emp.name.equals(this.name));
}
@Override
public int hashCode(){
int hash=(this.id==null ? 0: this.id.hashCode() ) +
(this.name==null ? 0: this.name.hashCode() );
return hash;
}
|
Let’s say in an organisation there exists a employee with id=1 and name=’sam’ and some data is stored corresponding to him, but if modifications have to be made in data, previous data must be overridden.
Collection interview Question 14. What classes should i prefer to use a key in HashMap in java? (Important)
Answer. This collection framework interview question will check your in depth knowledge of Java’s Collection Api’s. we should prefer String, Integer, Long, Double, Float, Short and any other wrapper class. Reason behind using them as a key is that they override equals() and hashCode() method, we need not to write any explicit code for overriding equals() and hashCode() method in java.
Let’s use Integer class as key in HashMap(Example) -
import java.util.HashMap;
import java.util.Map;
public class StringInMapExample {
public static void main(String...a){
//HashMap's key=Integer class (Integer’s api has already overridden hashCode() and equals() method for us )
Map<Integer, String> hm=new HashMap<Integer, String>();
hm.put(1, "data");
hm.put(1, "data OVERRIDDEN");
System.out.println(hm.get(1));
}
}
/*OUTPUT
data OVERRIDDEN
*/
|
If, we note above program, what we will see is we didn’t override equals() and hashCode() method, but still we were able to store data in HashMap, override data and retrieve data using get method.
>Let’s check in Integer’s API, how Integer class has overridden equals() and hashCode() method :
public int hashCode() {
return value;
}
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
|
Answer. Fresher and Experienced developers must answer this important collection framework interview question in detail in java.
Property
|
java.util.HashMap
|
java.util.Hashtable
| |
1
|
synchronization
|
java.util.HashMap is not synchronized (because 2 threads on same HashMap object can access it at same time) in java.
|
java.util.Hashtable is synchronized (because 2 threads on same Hashtable object cannot access it at same time) in java.
|
2
|
Performance
|
HashMap is not synchronized, hence its operations are faster as compared to Hashtable in java.
|
Hashtable is synchronized, hence its operations are slower as compared to HashMap in java.
If we are working not working in multithreading environment jdk recommends us to use HashMap.
|
3
|
Null keys and values
|
HashMap allows to store one null key and many null values i.e. many keys can have null value in java.
|
Hashtable does not allow to store null key or null value.
Any attempt to store null key or value throws runtimeException (NullPointerException) in java.
|
4
|
Introduced in which java version
|
HashMap was introduced in second version of java i.e. JDK 2.0
|
Hashtable was introduced in first version of java i.e. JDK 1.0
But it was refactored in java 2 i.e. JDK 1.2 to implement the Map interface, hence making it a member of member of the Java Collections Framework.
|
5
|
Recommendation
|
In non-multithreading environment it is recommended to use HashMap than using Hashtable in java.
| |
6
|
Extends Dictionary (Abstract class, which is obsolete)
|
HashMap does not extends Dictionary in java.
|
Hashtable extends Dictionary (which maps non-null keys to values. In a given Dictionary we can look up value corresponding to key) in java.
|
For more detail read : HashMap and Hashtable - Similarity and Differences in java
Answer. Another very important collection framework interview question to differentiate between following Set implementations in java.
Property
|
java.util.HashSet
|
java.util.LinkedHashSet
|
java.util.TreeSet
| |
1
|
Insertion order
|
java.util.HashSet does not maintains insertion order in java.
Example in java >
set.add("b");
set.add("c");
set.add("a");
Output >
No specific order
|
java.util.LinkedHashSet maintains insertion order in java.
Example in java >
set.add("b");
set.add("c");
set.add("a");
Output >
b
c
a
|
java.util.TreeSet is sorted by natural order in java.
Example in java >
set.add("b");
set.add("c");
set.add("a");
Output >
a
b
c
|
2
|
Null elements
|
HashSet allows to store one null in java.
|
LinkedHashSet allows to store one null in java.
|
TreeSet does not allows to store any null in java.
Any attempt to add null throws runtimeException (NullPointerException).
|
3
|
Data structure internally used for storing data
|
For storing elements HashSet internally uses HashMap.
|
For storing elements LinkedHashSet internally uses LinkedHashMap.
|
For storing elements TreeSet internally uses TreeMap.
|
4
|
Introduced in which java version
|
java.util.HashSet was introduced in second version of java (1.2) i.e. JDK 2.0
|
java.util.LinkedHashSet was introduced in second version of java (1.4) i.e. JDK 4.0
|
java.util.TreeSet was introduced in second version of java (1.2) i.e. JDK 2.0
|
5
|
Implements which interface
|
LinkedHashSet implements java.util.Set interface.
|
TreeSet implements java.util.Set
java.util.SortedSet
java.util.NavigableSet interface.
|
For more detail read : HashSet vs LinkedHashSet vs TreeSet in java
Collection interview Question 17. What are differences between HashMap and ConcurrentHashMap in java?
Answer. Take my words java developers won’t be able to get away from this very important collection framework interview question.
Property
|
java.util.HashMap
|
java.util.concurrent. ConcurrentHashMap
| |
synchronization
|
HashMap is not synchronized.
|
ConcurrentHashMap is synchronized.
| |
2 threads on same Map object can access it at concurrently?
|
Yes, because HashMap is not synchronized.
|
Yes.
But how despite of being synchronized, 2 threads on same ConcurrentHashMap object can access it at same time?
ConcurrentHashMap is divided into different segments based on concurrency level. So different threads can access different segments concurrently.
| |
Performance
|
We will synchronize HashMap and then compare its performance with ConcurrentHashMap.
We can synchronize hashMap by using Collections’s class synchronizedMap method.
Now, no 2 threads can access same instance of map concurrently.
Hence synchronized HashMap’s performance is slower as compared to ConcurrentHashMap.
But why we didn’t compared HashMap (unSynchronized) with ConcurrentHashMap?
Because performance of unSynchronized collection is always better than some synchronized collection. As, default (unSynchronized) hashMap didn’t cause any locking.
|
ConcurrentHashMap’s performance is faster as compared to HashMap (because it is divided into segments, as discussed in above point).
| |
Null keys and values
|
HashMap allows to store one null key and many null values i.e. any key can have null value.
|
ConcurrentHashMap does not allow to store null key or null value.
Any attempt to store null key or value throws runtimeException (NullPointerException).
| |
iterators
|
hashMap.keySet().iterator()
hashMap.values().iterator()
hashMap.entrySet().iterator()
all three iterators are fail-fast
|
concurrentHashMap.keySet().iterator()
concurrentHashMap.values().iterator()
concurrentHashMap.entrySet().iterator()
all three iterators are fail-safe.
| |
putIfAbsent
|
HashMap does not contain putIfAbsent method.
putIfAbsent method is equivalent to writing following code >
|
If map does not contain specified key, put specified key-value pair in map and return null.
If map already contains specified key, return value corresponding to specified key.
| |
Introduced in which java version
|
HashMap was introduced in java 2 i.e. JDK 1.2,
|
ConcurrentHashMap was introduced in java 5 i.e. JDK 1.5, since its introduction Hashtable has become obsolete, because of concurrency level its performance is better than Hashtable.
| |
Implements which interface
|
ConcurrentHashMap implements
java.util.Map and
java.util.concurrent.ConcurrentMap
| ||
Package
|
HashMap is in java.util package
|
ConcurrentHashMap is in java.util.concurrent package.
|
For more detail read : HashMap and ConcurrentHashMap in java
Collection interview Question 18. When to use HashMap vs Hashtable vs LinkedHashMap vs TreeMap in java?
Answer. Another important collection framework interview question
to differentiate between following Map implementations in java.
Differences between java.util.HashMap vs java.util.Hashtable vs java.util.LinkedHashMap vs java.util.TreeMap >
Property
|
HashMap
|
Hashtable
|
LinkedHashMap
|
TreeMap
| |
1
|
Insertion order
|
HashMap does not maintains insertion order in java.
|
Hashtable does not maintains insertion order in java.
|
LinkedHashMap maintains insertion order in java.
|
TreeMap is sorted by natural order of keys in java.
|
2
|
Performance
|
HashMap is not synchronized, hence its operations are faster as compared to Hashtable.
|
Hashtable is synchronized, hence its operations are slower as compared HashMap.
If we are working not working in multithreading environment jdk recommends us to use HashMap.
|
LinkedHashMap must be used only when we want to maintain insertion order. Time and space overhead is there because for maintaining order it internally uses Doubly Linked list.
|
TreeMap must be used only when we want sorting based on natural order. Otherwise sorting operations cost performance. (Comparator is called for sorting purpose)
|
3
|
Null keys and values
|
HashMap allows to store one null key and many null values i.e. many keys can have null value in java.
|
Hashtable does not allow to store null key or null value.
Any attempt to store null key or value throws runtimeException (NullPointerException) in java.
|
LinkedHashMap allows to store one null key and many null values i.e. any key can have null value in java.
|
TreeMap does not allow to store null key but allow many null values.
Any attempt to store null key throws runtimeException (NullPointerException) in java.
|
4
|
Implements which interface
|
Hashtable implements java.util.Map
|
LinkedHashMap implements java.util.Map
|
TreeMap implements
java.util.Map
java.util.SortedMap
java.util.NavigableMap
| |
5
|
Implementation uses?
|
HashMap use buckets
|
Hashtable use buckets
|
LinkedHashMap uses doubly linked lists
|
TreeMap uses Red black tree
|
6
|
Complexity of put, get and remove methods
|
O(1)
|
O(1)
|
O(1)
overhead of updating Doubly Linked list for maintaining order it internally uses.
|
O(log(n))
|
7
|
Extends java.util.Dictionary (Abstract class, which is obsolete)
|
HashMap doesn’t extends Dictionary.
|
Hashtable extends Dictionary (which maps non-null keys to values. In a given Dictionary we can look up value corresponding to key)
|
LinkedHashMap doesn’t extends Dictionary.
|
TreeMap doesn’t extends Dictionary.
|
8
|
Introduced in which java version?
|
HashMap was introduced in second version of java i.e. JDK 2.0
|
Hashtable was introduced in first version of java i.e. JDK 1.0
But it was refactored in java 2 i.e. JDK 1.2 to implement the Map interface, hence making it a member of member of the Java Collections Framework.
|
LinkedHashMap was introduced in fourth version of java i.e. JDK 4.0
|
TreeMap was introduced in second version of java i.e. JDK 2.0
|
For more detail read : HashMap vs Hashtable vs LinkedHashMap vs TreeMap in java
Answer. This is tricky and complex collection framework interview question for experienced developers in java.
Property
|
java.util.HashMap
|
java.util.IdentityHashMap
| |||
1
|
Keys comparison object-equality vs reference-equality
|
HashMap when comparing keys (and values) performs object-equality not reference-equality. In an HashMap, two keys k1 and k2 are equal if and only if (k1==null ? k2==null : k1.equals(k2))
|
IdentityHashMap when comparing keys (and values) performs reference-equality in place of object-equality. In an IdentityHashMap, two keys k1 and k2 are equal if and only if (k1==k2)
| ||
2
|
Initial size
|
Constructs a new HashMap, Its initial capacity is 16 in java.
|
Constructs a new IdentityHashMap, with maximum size of 21 in java.
| ||
3
|
Introduced in which java version
|
HashMap was introduced in second version of java i.e. JDK 2.0
|
IdentityHashMap was introduced in fourth version of java i.e. JDK 4.0
| ||
4
|
Program
|
Program 1 shows >
comparing keys (and values) performs object-equality in place of reference-equality . In an HashMap, two keys k1 and k2 are equal if and only if (k1==null ? k2==null : k1.equals(k2)). |
Program 2 shows >
comparing keys (and values) performs reference-equality in place of object-equality. In an IdentityHashMap, two keys k1 and k2 are equal if and only if (k1==k2).
| ||
5
|
overridden equals() and hashCode() method call?
|
As shown in Program 3.
|
overridden equals() and hashCode() method are not called when put, get methods are called in IdentityHashMap.
Because IdentityHashMap implements equals() and hashCode() method by itself and checks for reference-equality of keys.
As shown in Program 4.
| ||
6
|
Application - can maintain proxy object
|
HashMap cannot be used to maintain proxy object.
|
IdentityHashMap can be used to maintain proxy objects. For example, we might need to maintain proxy object for each object debugged in the program.
|
For more detail read : HashMap vs IdentityHashMap - Similarity and Differences with program in java
Collection interview Question 20. What is WeakHashMap in java?
Answer. Another tricky collection framework interview question for experienced developers in java.
An entry in a WeakHashMap will be automatically removed by garbage collector when its key is no longer in ordinary use. Mapping for a given key will not prevent the key from being discarded by the garbage collector, (i.e. made finalizable, finalized, and then reclaimed). When a key has been discarded its entry is removed from the map in java.
The behavior of the java.util.WeakHashMap class depends upon garbage collector
The behavior of the WeakHashMap class depends upon garbage collector in java. Because the garbage collector may discard keys at any time, in WeakHashMap it may look like some unknown thread is silently removing entries. Even if you synchronize WeakHashMap instance and invoke none of its methods,
- it is possible for the size method to return smaller values over time,
- for isEmpty method to return false and then true,
- for containsKey method to return true and later false for a given key,
- for get method to return a value for a given key but later return null,
- for put method to return null, and
- for remove method to return false for a key that previously existed in the WeakHashMap.
Each key object in a WeakHashMap is stored indirectly as the referent of a weak reference. Therefore a key will be removed automatically only after the weak references to it, both inside and outside of the map, have been cleared by the garbage collector.
Collection interview Question 21. What is EnumSet in java?
Answer. Freshers must know about EnumMap in java.
EnumSet all elements comes from a single enum type that is specified when the set is created in java.
Order of elements in EnumSet in java
The java.util.EnumSet maintains natural order (the order in which the enum constants are declared) of elements in java.
Iterator on EnumSet in java
The iterator returned by the iterator method traverses the elements in their natural order (the order in which the enum constants are declared).
iterator never throw ConcurrentModificationException and it may or may not show the effects of any modifications to the set that occur while the iteration is in progress.
Null elements in EnumSet in java
Null elements are not allowed in EnumSet in java. Attempts to insert a null element will throw NullPointerException in java.
Collection interview Question 22. What is EnumMap in java?
Answer. Freshers must be able to answer this collection framework interview question in java. A java.util.EnumMap is specialized Map implementation for use with enum type keys.
EnumMap all keys comes from a single enum type that is specified when the set is created in java.
Order of keys in EnumMap in java
The EnumMap maintains natural order (the order in which the enum constants are declared) of keys in java.
Iterator on EnumMap in java
The iterator returned by the iterator method in EnumMap traverses the elements in their natural order of keys(the order in which the enum constants are declared).
iterator never throw ConcurrentModificationException and it may or may not show the effects of any modifications to the map that occur while the iteration is in progress in java.
Null allowed in EnumMap in java?
Null keys are not allowed in EnumMap. Attempts to insert a null key will throw NullPointerException.
But, Null values are allowed in EnumMap in java.
Collection interview Question 23. How to implement own/custom HashMap in java? Or How HashMap works in java?
Answer.
Collection interview Question 24. How to implement own LinkedHashMap in java? Or LinkedHashMap works in java?
Answer.
Collection interview Question 25. How to implement own ArrayList in java?Or How ArrayList works in java ?
Collection interview Question 26. How to implement own HashSet in java? Or How HashSet works in java ?
Collection interview Question 27. How to implement own LinkedHashSet in java? Or How LinkedHashSet works in java ?
Collection interview Question 28. What do you mean by fail-fast and fast-safe? What is ConcurrentModificationException?
Answer.
Iterator returned by few Collection framework Classes are fail-fast, means any structural modification made to these classes during iteration will throw ConcurrentModificationException.
Some important classes whose returned iterator is fail-fast >
Iterator returned by few Collection framework Classes are fail-safe, means any structural modification made to these classes during iteration won’t throw any Exception.
Some important classes whose returned iterator is fail-safe >
For more detail read : ConcurrentModificationException, Fail-fast and Fail-safe in detail in java
Collection interview Question 29. What are different ways of iterating over elements in List?
Answer.
List<String> arrayList=new ArrayList<String>();
arrayList.add("javaMadeSoEasy");
|
- Iterate over elements in ArrayList using iterator()
iterator() method returns iterator to iterate over elements in ArrayList.
Iterator<String> iterator=arrayList.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
|
- Iterate over elements in ArrayList using listIterator()
ListIterator<String> listIterator=arrayList.listIterator();
|
ListIterator returned by ArrayList is also fail fast.
- Iterate over elements in list using enumeration
Enumeration<String> listEnum=Collections.enumeration(arrayList);
while(listEnum.hasMoreElements()){
System.out.println(listEnum.nextElement());
}
|
enumeration is also fail-fast.
- Iterate over elements in list using enhanced for loop
for (String string : arrayList) {
System.out.println(string);
}
|
enhanced for loop is also fail-fast.
Collection interview Question 30. What are different ways of iterating over elements in Set?
Set<String> hashSet=new HashSet<String>();
hashSet.add("javaMadeSoEasy");
|
- Iterate over elements in HashSet using iterator()
iterator() method returns iterator to iterate over elements in HashSet.
Iterator<String> iterator=hashSet.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
|
- Iterate over elements in Set using enumeration
Enumeration<String> listEnum=Collections.enumeration(set);
while(listEnum.hasMoreElements()){
System.out.println(listEnum.nextElement());
}
|
enumeration is also fail-fast.
- Iterate over elements in Set using enhanced for loop
for (String string : set) {
System.out.println(string);
}
|
enhanced for loop is also fail-fast.
Collection interview Question 31. What are different ways of iterating over keys, values and entry in Map?
Map<Integer,String> hashMap=new HashMap<Integer,String>(); hashMap.put(11, "javaMadeSoEasy");
hashMap.put(21, "bmw");
hashMap.put(31, "ferrari");
|
- Iterate over keys -
hashMap.keySet().iterator() method returns iterator to iterate over keys in HashMap.
Iterator<Integer> keyIterator=hashMap.keySet().iterator();
while(keyIterator.hasNext()){
System.out.println(keyIterator.next());
}
/*OUTPUT
21
11
31
*/
|
- Iterate over values -
hashMap.values().iterator() method returns iterator to iterate over keys in HashMap.
Iterator<String> valueIterator=hashMap.values().iterator();
while(valueIterator.hasNext()){
System.out.println(valueIterator.next());
}
/*OUTPUT
javaMadeSoEasy
audi
ferrari
*/
|
- Iterate over Entry-
hashMap.entrySet().iterator() method returns iterator to iterate over keys in HashMap.
Iterator<Entry<Integer, String>> entryIterator=hashMap.entrySet().iterator();
while(entryIterator.hasNext()){
System.out.println(entryIterator.next());
}
/*OUTPUT
21=javaMadeSoEasy
11=audi
31=ferrari
*/
|
Collection interview Question 32. What is difference between Comparable and Comparator? How can you sort List?
Answer.
Property
|
Comparable
|
Comparator
| |
1
|
Comparing instances of class
|
Comparable is used to compare instances of same class
|
Comparator can be used to compare instances of same or different classes.
|
2
|
sorting order
|
Comparable can be implemented by class which need to define a natural ordering for its objects.
|
Comparator is implemented when one wants a different sorting order and define custom way of comparing two instances.
|
3
|
Changes to class
|
For using Comparable, original Class must implement it.
Example-
class Employee implements Comparable<Employee>
For using Comparable, Employee Class must implement it, no other class can implement it.
As used in Program 1
|
Class itself can implement Comparator
or
any other class can implement Comparator. Hence avoiding modification to original class.
Example-
class ComparatorName implements Comparator<Employee>
class ComparatorId implements Comparator<Employee>
In above example modifications were made to ComparatorName and ComparatorId. Hence avoiding modification to Employee class.
As used in Program 4
|
4
|
Sorting on basis on one or many criteria
|
Provides sorting only on one criteria, because Comparable can be implemented by original class only.
|
We can use Comparator to sort class on many criterias because class itself or any other class can implement Comparator.
|
5
|
Method
|
compareTo method
@Override
public int compareTo(Employee obj) {
//sort Employee on basis of name(ascending order)
return this.name.compareTo(obj.name);
}
Method compares this with obj object and returns a integer.
As used in Program 1
|
compare method
@Override
public int compare(Employee obj1, Employee obj2) {
//sort Employee on basis of name(ascending order)
return obj1.name.compareTo(obj2.name);
}
Method compares obj1 with obj2 object and returns a integer.
As used in Program 3
|
6
|
Package
|
java.lang
java.lang package is automatically imported by every program in java.
Hence, we need to write explicit statement for importing java.lang.Comparable.
|
java.util
We need to write explicit import statement -
import java.util.Comparator
|
7
|
Using Collections.sort
|
Let's say we wanna sort list of Employee,
Collections.sort(list) uses Comparable interface for sorting class.
As used in Program 1
|
Let's say we wanna sort list of Employee,
Collections.sort(list,new ComparatorName());
uses Comparator interface for sorting class.
As used in Program 5
|
Collection interview Question 33. How sort method of Collections class works internally?
Answer. Collections.sort internally calls Arrays.sort,
If number of elements is less than 7 then Insertion Sort is used rather than Merge Sort. (because in case elements are less than 7 it offers better time complexity)
Collection interview Question 34. How can you sort given HashMap on basis of keys?
Answer.
Please Read : Sort Map by key in Ascending and descending order by implementing Comparator interface and overriding its compare method and using TreeMap
Collection interview Question 35. How can you sort given HashMap on basis of values?
Answer.
Please Read : Sort Map by value in Ascending and descending order by implementing Comparator interface and overriding its compare method
Collection interview Question 36. In what all possible ways you can sort a given Set?
Answer.
Collection interview Question 37. How you can sort arrays? And how Comparator of superclass can be used by subclasses?
Answer.
Please Read : Arrays.sort to sort arrays by implementing Comparator and how Comparator of superclass can be used by subclasses
Answer.
Property
|
java.util.ArrayList
|
java.util.concurrent. CopyOnWriteArrayList
| |
1
|
synchronization
|
ArrayList is not synchronized (because 2 threads on same ArrayList object can access it at same time).
I have created program to show see consequence of using ArrayList in multithreading environment.
In the program i will implement our own arrayList.
|
CopyOnWriteArrayList is synchronized (because 2 threads on same CopyOnWriteArrayList object cannot access it at same time).
|
2
|
Iterator and listIterator
|
Iterator and listIterator returned by ArrayList are Fail-fast, means any structural modification made to ArrayList during iteration using Iterator or listIterator will throw ConcurrentModificationException in java.
As shown in Program 1 below.
|
Iterator and listIterator returned by CopyOnWriteArrayList are Fail-safe in java.
As shown in Program 2 below.
|
3
|
Enumeration is fail-fast
|
Enumeration returned by ArrayList is fail-fast, means any structural modification made to ArrayList during iteration using Enumeration will throw ConcurrentModificationException.
As shown in Program 1 below.
|
Enumeration returned by CopyOnWriteArrayList is fail-safe.
As shown in Program 2 below.
|
4
|
Iterate using enhanced for loop
|
Iteration done on ArrayList using enhanced for loop is Fail-fast, means any structural modification made to ArrayList during iteration using enhanced for loop will throw ConcurrentModificationException.
As shown in Program 1 below.
|
Iteration done on CopyOnWriteArrayList using enhanced for loop is Fail-safe.
As shown in Program 2 below.
|
5
|
Performance
|
ArrayList is not synchronized, hence its operations are faster as compared to CopyOnWriteArrayList.
|
CopyOnWriteArrayList is synchronized, hence its operations are slower as compared to ArrayList.
|
6
|
AbstractList
|
ArrayList extends AbstractList (abstract class) which provides implementation to List interface to minimize the effort required to implement this interface backed by RandomAccess interface.
|
CopyOnWriteArrayList does not extends AbstractList, though CopyOnWriteArrayList also implements RandomAccess interface.
|
7
|
Introduced in which java version
|
ArrayList was introduced in second version of java (1.2) i.e. JDK 2.0
|
CopyOnWriteArrayList was introduced in fifth version of java (1.5) i.e. JDK 5.0
|
8
|
Package
|
java.util
|
java.util.concurrent
|
Answer.
Property
|
java.util.HashSet
|
java.util.concurrent. CopyOnWriteArraySet
| |
1
|
synchronization
|
HashSet is not synchronized (because 2 threads on same HashSet object can access it at same time) in java.
|
CopyOnWriteArraySet is synchronized (because 2 threads on same CopyOnWriteArraySet object cannot access it at same time) in java.
|
2
|
Iterator
|
Iterator returned by HashSet is Fail-fast, means any structural modification made to HashSet during iteration using Iterator will throw ConcurrentModificationException in java.
As shown in Program 1 below.
|
Iterator returned by CopyOnWriteArraySet is Fail-safe in java.
As shown in Program 2 below.
|
3
|
Enumeration is fail-fast
|
Enumeration returned by HashSet is fail-fast, means any structural modification made to HashSet during iteration using Enumeration will throw ConcurrentModificationException.
As shown in Program 1 below.
|
Enumeration returned by CopyOnWriteArraySet is fail-safe.
As shown in Program 2 below.
|
4
|
Iterate using enhanced for loop
|
Iteration done on HashSet using enhanced for loop is Fail-fast, means any structural modification made to HashSet during iteration using enhanced for loop will throw ConcurrentModificationException.
As shown in Program 1 below.
|
Iteration done on CopyOnWriteArraySet using enhanced for loop is Fail-safe.
As shown in Program 2 below.
|
5
|
Performance
|
HashSet is not synchronized, hence its operations are faster as compared to CopyOnWriteArraySet.
|
CopyOnWriteArraySet is synchronized, hence its operations are slower as compared to HashSet.
|
6
|
Introduced in which java version
|
HashSet was introduced in second version of java (1.2) i.e. JDK 2.0
|
CopyOnWriteArraySet was introduced in fifth version of java (1.5) i.e. JDK 5.0
|
7
|
Package
|
java.util
|
java.util.concurrent
|
For more detail read : HashSet vs CopyOnWriteArraySet - Similarity and Differences with program
Answer.
Property
|
java.util.TreeSet
|
java.util.concurrent. ConcurrentSkipListSet
| |
1
|
synchronization
|
TreeSet is not synchronized (because 2 threads on same TreeSet object can access it at same time) in java.
|
ConcurrentSkipListSet is synchronized (because 2 threads on same ConcurrentSkipListSet object cannot access it at same time) in java.
|
2
|
Iterator
|
Iterator returned by TreeSet is Fail-fast, means any structural modification made to TreeSet during iteration using Iterator will throw ConcurrentModificationException in java.
As shown in Program 1 below.
|
Iterator returned by ConcurrentSkipListSet is Fail-safe in java.
As shown in Program 2 below.
|
3
|
Enumeration is fail-fast
|
Enumeration returned by TreeSet is fail-fast, means any structural modification made to TreeSet during iteration using Enumeration will throw ConcurrentModificationException.
As shown in Program 1 below.
|
Enumeration returned by ConcurrentSkipListSet is fail-safe.
As shown in Program 2 below.
|
4
|
Iterate using enhanced for loop
|
Iteration done on TreeSet using enhanced for loop is Fail-fast, means any structural modification made to TreeSet during iteration using enhanced for loop will throw ConcurrentModificationException.
As shown in Program 1 below.
|
Iteration done on ConcurrentSkipListSet using enhanced for loop is Fail-safe.
As shown in Program 2 below.
|
5
|
Performance
|
TreeSet is not synchronized, hence its operations are faster as compared to ConcurrentSkipListSet.
|
ConcurrentSkipListSet is synchronized, hence its operations are slower as compared to TreeSet.
|
6
|
Introduced in which java version
|
TreeSet was introduced in second version of java (1.2) i.e. JDK 2.0
|
ConcurrentSkipListSet was introduced in sixth version of java (1.6) i.e. JDK 6.0
|
7
|
Package
|
java.util
|
java.util.concurrent
|
For more detail read : TreeSet vs ConcurrentSkipListSet - Similarity and Differences with program
Answer.
Property
|
java.util.TreeMap
|
java.util.concurrent. ConcurrentSkipListMap
| |
1
|
synchronization
|
TreeMap is not synchronized (because 2 threads on same TreeMap object can access it at same time) in java.
|
ConcurrentSkipListMap is synchronized (because 2 threads on same ConcurrentSkipListMap object cannot access it at same time) in java.
|
2
|
Iterator
|
all three iterators are fail-fast, means any structural modification made to TreeMap during iteration using any of 3 Iterator will throw ConcurrentModificationException.
As shown in Program 1 below.
|
The iterators returned by the iterator() method of Map's “collection view methods" are fail-safe >
all three iterators are fail-safe.
As shown in Program 2 below.
|
3
|
Performance
|
TreeMap is not synchronized, hence its operations are faster as compared to ConcurrentSkipListMap.
|
ConcurrentSkipListMap is synchronized, hence its operations are slower as compared to TreeMap.
|
4
|
Introduced inin which java version
|
TreeMap was introduced in second version of java i.e. JDK 2.0
|
ConcurrentSkipListMap was introduced in sixth version of java i.e. JDK 6.0
|
5
|
Package
|
java.util
|
java.util.concurrent
|
6
|
Implements which interface
|
Map
SortedMap
NavigableMap
|
Map
SortedMap
NavigableMap
ConcurrentNavigableMap
|
For more detail read : TreeMap vs ConcurrentSkipListMap - Similarity and Differences with program
Collection interview Question 43. Can we use null element in TreeSet? Give reason?
Any attempt to add null throws runtimeException (NullPointerException).
TreeSet internally compares elements for sorting elements by natural order (comparator may be used for sorting, if defined at creation time) and null is not comparable, Any attempt to compare null with other object will throw NullPointerException.
Collection interview Question 44. Can we use null key in TreeMap? Give reason?
Any attempt to store null key throws runtimeException (NullPointerException).
TreeMap internally compares keys for sorting keys by natural order (comparator may be used for sorting, if defined at creation time) and null is not comparable, Any attempt to compare null with other object will throw NullPointerException.
Collection interview Question 45. How ConcurrentHashMap works? Can 2 threads on same ConcurrentHashMap object access it concurrently?
Answer. ConcurrentHashMap is divided into different segments based on concurrency level. So different threads can access different segments concurrently.
Can threads read the segment locked by some other thread?
Yes. When thread locks one segment for updation it does not block it for retrieval (done by get method) hence some other thread can read the segment (by get method), but it will be able to read the data before locking.
For operations such as putAll concurrent retrievals may reflect removal of only some entries.
For operations such as clear concurrent retrievals may reflect removal of only some entries.
Segments in ConcurrentHashMap with diagram >
we have ConcurrentHashMap with 4 segments -
(Diagram shows how segments are formed in ConcurrentHashMap)
Collection interview Question 46. Write a program to show consequence of using ArrayList in multithreading environment?
Collection interview Question 47. Write a program to show advantage of using Vector in multithreading environment?
Collection interview Question 48. Mention properties of most frequently used Collection classes and Interfaces? Mention as many properties as much you can.
Answer. This question is real test for experienced developers, this will test your in depth awareness of Collection classes and Interfaces. Answering this question in detail will really ensure your selection.
Duplicate elements
|
insertion order
|
Sorted by natural order
|
synchronized
|
null elements
|
Iterator
| |
Yes
|
Yes
|
Yes
|
Iterator & listIterator
are
| |||
Yes
|
Yes
|
Yes
|
Iterator & listIterator
are
Fail-fast
| |||
Yes
|
Yes
|
Yes
|
Yes
|
Iterator & listIterator
are
| ||
Duplicate elements
|
insertion order
|
Sorted by natural order
|
synchronized
|
null elements
|
Iterator
| |
Yes
|
Fail-fast
| |||||
Yes
|
Yes
|
Fail-fast
| ||||
Yes
|
No
|
Fail-fast
| ||||
Yes
|
Yes
|
No
|
Fail-safe
| |||
Duplicate Keys
|
insertion order of keys
|
Sorted by natural order of keys
|
synchronized
|
null keys or null values
|
Iterator
Map implementations returns 3 iterators >
map.keySet().iterator()
map.values().iterator()
map.entrySet().iterator()
| |
one null key and many null values
|
All are Fail-fast
| |||||
Yes
|
No
|
All are Fail-fast
| ||||
Yes
|
No
|
All are Fail-safe
| ||||
Yes
|
Null key not allowed,
Allow many null values
|
All are Fail-fast
| ||||
Yes
|
Yes
|
No
|
All are Fail-safe
|
Collection interview Question. 49 Which list class must be preferred in multithreading environment, considering performance constraint?
Collection interview Question 50. Which Set class must be preferred in multithreading environment, considering performance constraint?
Answer. CopyOnWriteArraySet (allows null and elements aren't sorted in natural order) or ConcurrentSkipListSet (doesn’t allows null and elements are sorted in natural order)
Select one depending on your requirement.
Collection interview Question 51. Which Map class must be preferred in multithreading environment, considering performance constraint?
Answer. ConcurrentHashMap(keys aren't sorted in natural order) or ConcurrentSkipListMap(keys are sorted in natural order)
Select one depending on your requirement.
Collection interview Question 52. Let’s say you have to build dictionary and multiple users can add data in that dictionary? And you can use 2 Collection classes? Which Collection classes you will prefer and WHY?
Answer. It’s very important question which test your logical reasoning and your ability to create robust applications in multithreading environment.
ConcurrentSkipListMap<String, TreeSet<String>> myDictionary =
new ConcurrentSkipListMap<String, TreeSet<String>>();
|
- keys are sorted in natural order (words will be sorted in natural order),
- doesn’t allow null keys (words can’t be null)
- doesn’t allow duplicate keys (words can’t be duplicate) and
- synchronized, so 2 threads won’t create synchronization problems (will take care of different uses adding words concurrently)
for storing meaning of word in dictionary we must use TreeSet as value in ConcurrentSkipListMap because one word can have many meanings >
- elements are sorted in natural order (meaning of word are sorted in natural order),
- doesn’t allow null elements (meaning of word can’t be null),
- doesn’t allow duplicate elements (meaning of word can’t be duplicate)
Program for creating and using Java dictionary using Collection classes>
package com.ankit.dictionary;
import java.util.TreeSet;
import java.util.concurrent.ConcurrentSkipListMap;
/** Copyright (c), AnkitMittal JavaMadeSoEasy.com */
public class MyDictionary {
public static void main(String[] args) {
ConcurrentSkipListMap<String, TreeSet<String>> myDictionary =
new ConcurrentSkipListMap<String, TreeSet<String>>();
TreeSet<String> innocentMeaning = new TreeSet<String>();
innocentMeaning.add("not responsible for an event yet suffering its consequences");
innocentMeaning.add("not guilty of a crime");
myDictionary.put("innocent", innocentMeaning);
TreeSet<String> appealingMeaning = new TreeSet<String>();
appealingMeaning.add("attractive");
appealingMeaning.add("expressing a desire for help");
myDictionary.put("appealing", appealingMeaning);
System.out.println(myDictionary);
}
}
/* OUTPUT
{appealing=[attractive, expressing a desire for help], innocent=[not guilty of a crime, not responsible for an event yet suffering its consequences]}
*/
|
Collection interview Question 53. Why to use java.util.WeakHashMap map which is so inconsistent and unpredictable in behaviour?
Answer. Let's say we have huge application which consists of lots n lots of object and may run short of memory at any time, we will like garbage collector to quickly discard less used key value pair to free up some memory. As, behavior of the WeakHashMap class depends upon garbage collector.
I believe discarding less used key-value is always going to a better option than running out of memory.
Related >>
COLLECTION - Top 100 important interview OUTPUT questions and answers in java, Set-2 > Q51- Q75
COLLECTION - Top 100 important interview OUTPUT questions and answers in java, Set-2 > Q51- Q75