40 Java Collections Interview Questions and Answers
40 Java Collections Interview Questions and Answers
TUTORIALS
#INTERVIEW QUESTIONS
JAVA
WEB DESIGN
Java Collections Framework are the fundamental aspect of java programming language.
Its one of the important topic for java interview questions. Here I am listing some
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
Be My Friend
1/54
12/2/2014
Its one of the important topic for java interview questions. Here I am listing some
Be My Friend
important questions and answers for java collections framework. I will keep on adding
more questions to this post as and when I will find something that should be here, so
you might want to bookmark this post for future purpose too.
1. What are Collection related features in Java 8?
JournalDev
Like
7. What is an Iterator?
8. What is difference between Enumeration and Iterator interface?
Pankaj Kumar
9. Why there is not method like Iterator.add() to add elements to the collection?
Follow
10. Why Iterator dont have a method to get next element directly without moving the
cursor?
3,531 followers
JournalDev
Follow
+1
+ 7,743
Recent Posts
12/2/2014
ArrayList?
Windows
Example
Tutorial
ArrayList<Integer>[10];
1.
Categories
AngularJS
Database
MongoDB
3/54
12/2/2014
MongoDB
A. Java Stream API for collection classes for supporting sequential as well as
parallel processing
Hibernate
B. Iterable interface is extended with forEach() default method that we can use to
iterate over a collection. It is very helpful when used with lambda expressions
Interview Questions
Java
in
Iterator interface,
Map
forEachRemaining(Consumer
Design Patterns
Java EE
methods.
jQuery
jQuery Plugins
JSF
2.
Maven
PHP
Collections framework?
Collections are used in every programming language and initial java release
PrimeFaces
contained few classes for collections: Vector, Stack, Hashtable, Array. But looking at
the larger scope and usage, Java 1.2 came up with Collections Framework that group
Random
Resources
Java Collections have come through a long way with usage of Generics and
HTML
Scripts
Softwares
adve rtise he re
Spring
Struts 2
Web Design
4/54
12/2/2014
Reduced effort for code maintenance by using collection classes shipped with
JDK.
Web Design
Wordpress
3.
About
Advertise
so if you try to add any element of other type it throws compile time error.
Java Interview
This avoids ClassCastException at Runtime because you will get the error at
Questions
compilation. Also Generics make code clean since we dont need to use casting and
instanceof operator. I would highly recommend to go through Java Generic Tutorial
to understand generics in a better way.
4.
Pages
Privacy Policy
Tutorials
Write For Us
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
5/54
12/2/2014
ListIterator.
5.
6.
7.
What is an Iterator?
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
6/54
12/2/2014
Iterator interface provides methods to iterate over any Collection. We can get iterator
instance from a Collection using iterator() method. Iterator takes the place of
Enumeration in the Java Collections Framework. Iterators allow the caller to remove
elements from the underlying collection during the iteration. Java Collection iterator
provides a generic way for traversal through the elements of a collection and
implements Iterator Design Pattern.
8.
9.
10.
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
7/54
12/2/2014
It can be implemented on top of current Iterator interface but since its use will be
rare, it doesnt make sense to include it in the interface that everyone has to
implement.
11.
12.
Using iterator is more thread-safe because it makes sure that if underlying list
elements are modified, it will throw
ConcurrentModificationException.
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
8/54
12/2/2014
13.
ConcurrentModificationException.
All the
14.
java.util.concurrent
are fail-safe.
Fail-fast iterators throw ConcurrentModificationException whereas fail-safe iterator
never throws ConcurrentModificationException.
Check this post for CopyOnWriteArrayList Example.
15.
ConcurrentModificationException
16.
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
9/54
12/2/2014
interface?
Iterator interface declare methods for iterating a collection but its implementation is
responsibility of the Collection implementation classes. Every collection class that
returns an iterator for traversing has its own Iterator implementation nested class.
This allows collection classes to chose whether iterator is fail-fast or fail-safe. For
example ArrayList iterator is fail-fast whereas CopyOnWriteArrayList iterator is failsafe.
17.
What is UnsupportedOperationException?
UnsupportedOperationException is
add and
remove operations.
18.
Map.Entry static
HashMap works on hashing algorithm and uses hashCode() and equals() method in
put and get methods.
When we call
put method
with hashing to find out the index to store the key-value pair. The Entry is stored in
the LinkedList, so if there are already existing entry, it uses equals() method to check
if the passed key already exists, if yes it overwrites the value else it creates a new
entry and store this key-value Entry.
When we call
get method
index in the array and then use equals() method to find the correct Entry and return
its value. Below image will explain these detail
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
clearly.
10/54
12/2/2014
The other important things to know about HashMap are capacity, load factor,
threshold resizing. HashMap initial default capacity is 16 and load factor is 0.75.
Threshold is capacity multiplied by load factor and whenever we try to add an entry,
if map size is greater than threshold, HashMap rehashes the contents of map into a
new array with a larger capacity. The capacity is always power of 2, so if you know
that you need to store a large number of key-value pairs, for example in caching data
from database, its good idea to initialize the HashMap with correct capacity and load
factor.
19.
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
11/54
12/2/2014
and equals() to find duplicates, so its very important to implement them correctly.
The implementation of equals() and hashCode() should follow these rules.
If o1.equals(o2), then o1.hashCode() == o2.hashCode()should always be true.
If o1.hashCode() == o2.hashCode is true, it doesnt mean that o1.equals(o2) will
be true.
20.
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
12/54
12/2/2014
1
2
3
4
5
6
7
8
9
10
11
12
This is the reason why String and Integer are mostly used as HashMap keys.
21.
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
13/54
12/2/2014
22.
LinkedHashMap was
you want iteration order, you can easily switch from HashMap to
LinkedHashMap but that is not the case with Hashtable whose iteration order is
unpredictable.
D. HashMap provides Set of keys to iterate and hence its fail-fast but Hashtable
provides Enumeration of keys that doesnt support this feature.
E. Hashtable is considered to be legacy class and if you are looking for
modifications of Map while iterating, you should use ConcurrentHashMap.
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
14/54
12/2/2014
23.
24.
25.
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
15/54
12/2/2014
25.
Arrays can contain primitive or Objects whereas ArrayList can contain only Objects.
Arrays are fixed size whereas ArrayList size is dynamic.
Arrays doesnt provide a lot of features like ArrayList, such as addAll, removeAll,
iterator etc.
Although ArrayList is the obvious choice when we work on list, there are few times
when array are good to use.
If the size of list is fixed and mostly used to store and traverse them.
For list of primitive data types, although Collections use autoboxing to reduce
the coding effort but still it makes them slow when working on fixed size
primitive data types.
If you are working on fixed multi-dimensional situation, using [][] is far more
easier than List<List<>>
26.
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
16/54
12/2/2014
27.
28.
What is EnumSet?
java.util.EnumSet is
in an enum set must come from a single enum type that is specified, explicitly or
implicitly, when the set is created. EnumSet is not synchronized and null elements
are not allowed. It also provides some useful methods like copyOf(Collection c), of(E
first, E rest) and complementOf(EnumSet s).
Check this post for java enum tutorial.
29.
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
17/54
12/2/2014
30.
31.
What is BlockingQueue?
java.util.concurrent.BlockingQueue is
the queue to become non-empty when retrieving and removing an element, and
wait for space to become available in the queue when adding an element.
BlockingQueue interface is part of java collections framework and its primarily used
for implementing producer consumer problem. We dont need to worry about
waiting for the space to be available for producer or object to be available for
consumer in BlockingQueue as its handled by implementation classes of
BlockingQueue.
Java provides several BlockingQueue implementations such as ArrayBlockingQueue,
LinkedBlockingQueue, PriorityBlockingQueue, SynchronousQueue etc.
Check this post for use of BlockingQueue for producer-consumer problem.
32.
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
18/54
12/2/2014
Both Queue and Stack are used to store data before processing them.
java.util.Queue is
33.
34.
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
19/54
12/2/2014
40 Java
Collections
Interview Questions
Answers
example, as a CEO, I would like to sort the employees
based
on Salary,
an HRand
would
like to sort them based on the age. This is the situation where we need to use
Comparator interface because Comparable.compareTo(Object o) method
implementation can sort based on one field only and we cant chose the field on
which we want to sort the Object.
Comparator interface
need to be
35.
36.
Collections.sort().
Arrays.sort().
If we need to sort a
sort() methods for natural sorting (using Comparable) or sorting based on criteria
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
20/54
12/2/2014
(using Comparator).
Collections internally uses Arrays sorting method, so both of them have same
performance except that Collections take sometime to convert list to array.
37.
before passing it as
argument, this will make sure that any operation to change the collection will throw
UnsupportedOperationException.
38.
Collections.synchronizedCollection(Collection c) to
get a synchronized
39.
40.
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
21/54
12/2/2014
40.
get(index i) is
on the number of elements in the list. So its performance in Big-O notation is O(1).
Example 2: A linear search on array or list performance is O(n) because we need to
search through entire list of elements to find the element.
41.
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
22/54
12/2/2014
42.
43.
ArrayList<Integer>();
Generics doesnt support sub-typing because it will cause issues in achieving type
safety. Thats why List<T> is not considered as a subtype of List<S> where S is the
super-type of T. To understanding why its not allowed, lets see what could have
happened if it has been supported.
1
2
3
4
As you can see from above code that IF generics would have been supporting subtyping, we could have easily add a Double to the list of Long that would have caused
ClassCastException at
44.
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
23/54
12/2/2014
Download Now
generics type information gets erased at runtime by Type Erasure, the array store
check would have been passed where it should have failed. Lets understand this
with a simple example code.
1
2
3
4
5
Arrays are covariant by nature i.e S[] is a subtype of T[] whenever S is a subtype of T
but generics doesnt support covariance or sub-typing as we saw in last question. So
if we would have been allowed to create generic arrays, because of type erasure we
would not get array store exception even though both types are not related.
I will keep on adding more questions on java collections framework as and when I found
Email address:
them, if you found it useful please share it with others too, it motivates me in writing
more like these.
I AM any
IN! important question, I will include that to list.
Please let me know if I have missed
4330 Happy Subscribers and Counting...
24/54
12/2/2014
Interfaces
Java Generics Tutorial - Example Class, Interface, Methods, Wildcards and
much more
How to Avoid ConcurrentModificationException when using an Iterator
Iterator Design Pattern in Java - Example Tutorial
Java 8 Features for Developers - lambdas, Functional interface, Stream and
Time API
Core Java Interview Questions and Answers
java collections
Written by Pankaj
If you have come this far, it means that you liked what you are reading.
Why not reach little more and connect with me directly on Google Plus,
Facebook or Twitter. I would love to hear your thoughts and opinions on
my articles directly.
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
25/54
12/2/2014
Pankaj says:
November 22, 2014 at 10:11 am
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
26/54
12/2/2014
All the iterator implementation in java.util package collection classes are fail-fast
whereas collection classes in java.util.concurrent implement fail-safe iteraator.
Reply
Prakash says:
November 19, 2014 at 2:57 am
Jagadeesh says:
October 16, 2014 at 2:16 am
HI Pankaj,
I great to see this site, It is very useful for Interviews, But here I found only 21
questions and answers,Can u post all the answers?
Thanks a lot
Reply
Dharmendra says:
September 21, 2014 at 1:43 am
27/54
12/2/2014
Reply
Danny says:
September 18, 2014 at 11:04 pm
Hi,
really nice tutorial.
Just a correction:
the default capacity of HashMap is 16.
reference:
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6b14/java/util/HashMap.java#HashMap.%3Cinit%3E%28%29
Reply
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
28/54
12/2/2014
Karl says:
August 26, 2014 at 1:09 am
Karl says:
August 25, 2014 at 7:57 pm
Amit says:
August 22, 2014 at 1:28 am
vinita says:
July 22, 2014 at 3:58 am
29/54
12/2/2014
Reply
pk says:
July 9, 2014 at 4:44 am
sudheer says:
July 4, 2014 at 3:25 am
Arti says:
June 28, 2014 at 8:30 am
30/54
12/2/2014
chandan says:
June 6, 2014 at 1:27 am
Abhay says:
June 5, 2014 at 8:14 am
Hi Pankaj,
You have not added answers to all questions listed above ? Please provide answers
also if possible.
Your answers are easy to understand and very clear. Thanks in advance.
Reply
Abhay says:
June 5, 2014 at 8:17 am
Please ignore:)
Reply
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
31/54
12/2/2014
Maruthi says:
May 4, 2014 at 10:40 pm
jkbkrk says:
March 19, 2014 at 7:36 pm
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
32/54
12/2/2014
Thanks.
Reply
Sushil says:
March 12, 2014 at 5:12 am
33/54
12/2/2014
Excellent Work..!!
Reply
jameer says:
March 6, 2014 at 7:54 am
Hello, Pankaj.
Awesome Explanation.
Reply
vidhya says:
March 1, 2014 at 9:27 am
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
34/54
12/2/2014
Shelly says:
February 11, 2014 at 9:40 am
Hi Pankaj,
Its a great article just one thing that i question 40 you mention If we have to iterate
over the Map in order of insertion, we need to use TreeMap it shouldnt be
linkedhashmap instead of treemap.
Thanks
Reply
Pankaj says:
February 12, 2014 at 12:05 am
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
35/54
12/2/2014
Brijeshwar says:
September 27, 2014 at 9:39 am
Hi Pankaj,
Insertion order is maintained only in LinkedHashMap whereas TreeMap
maintains key based SortedOrder, Please correct me if I am wrong.
Reply
Divya says:
February 2, 2014 at 10:46 am
Hello Pankaj,
Can you please explain the the question no 43 Why cant we create generic array in
more detail and in easy way. Its very difficult to understand it.
Please help me out.
Thanks,
Divya
Reply
Pankaj says:
February 2, 2014 at 9:34 pm
and try to
36/54
12/2/2014
Lets get through each line in the sample code and try to
understand what is happening.
1. List<Integer>[] intList = new List<Integer>[5];
This line will throw compile time exception now because we cant have generic
array. Just for the sake of argument, lets assume that its allowed and compiler
dont throw any error.
Since generics type information gets erased at runtime by Type Erasure, it will be
like an array of List at runtime like List[] intList = new List[5];
2. Object[] objArray = intList;
Perfectly valid statement, creating an object array.
3. List<Double> doubleList = new ArrayList<Double>();
At runtime List doubleList = new ArrayList();
4. doubleList.add(Double.valueOf(1.23));
Valid statement, adding Double to the list.
5. objArray[0] = doubleList;
You see the problem here, since the objArray is referring to intList, we are
basically setting doubleList to one of the elements of the array that is supposed
to contain only Integer List. And it will work fine because for Array both intList
and doubleList are just list, since there is no type information available.
Thats why Generic Arrays are not supported in Java.
Reply
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
37/54
12/2/2014
Reply
Harsha says:
January 26, 2014 at 4:06 pm
Rajan says:
January 21, 2014 at 9:44 am
Hi Pankaj,
Thanks for such a nice detail on collections.
Reply
Akhil says:
January 18, 2014 at 3:01 pm
Hi Pankaj,
In question no 19, below line will always return null.
myHashMap.get(new MyKey(Pankaj));
since its creating new key everytime and there is no value available for this key. Please
update it,if im correct and one more please replace all the strings enclosed with
double quotes.
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
38/54
12/2/2014
Thanks,
Akhil
Reply
Pankaj says:
January 18, 2014 at 6:51 pm
sam says:
January 16, 2014 at 12:33 pm
Hi Pankaj ,
I was looking for some good interview question and found this . Its really very helpful
and descriptive.
You deserve praise for it . Excellent work Sir and keep it up !
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
39/54
12/2/2014
Reply
Malli says:
December 20, 2013 at 7:11 am
Hi Pankaj,
Thanks for given a good kind of materiel. very useful to us. I request you,
please provide JSF, EJB and JPA.
Reply
krishna says:
December 5, 2013 at 5:06 am
Thanks a TON
Reply
40/54
12/2/2014
Reply
test says:
January 1, 2014 at 11:25 am
Ganesh says:
December 1, 2013 at 10:25 am
Arun says:
November 15, 2013 at 5:06 pm
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
41/54
12/2/2014
siri says:
November 13, 2013 at 5:44 am
Hi,
Kindly help to remove extra characters from the code like ".
Reply
siri says:
November 13, 2013 at 5:41 am
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
42/54
12/2/2014
Naresh says:
November 5, 2013 at 10:35 am
Sandeep says:
October 29, 2013 at 11:18 am
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
43/54
12/2/2014
Yogesh says:
July 18, 2013 at 11:23 am
G.Palanikumar says:
July 15, 2013 at 6:13 am
Respected Sir,
Really i proud of you. you were posted many questions always i am welcome. but
company never discuss to candidate in first time they give some programs for
interview time and write the output. i am expecting these kind of sample question with
answer. thank you sir. if you find any mistake my words please forgive me sir. that is
my suggestion thats all
Reply
Pankaj says:
July 15, 2013 at 7:49 pm
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
44/54
12/2/2014
followup questions.
Reply
hmm says:
July 11, 2013 at 7:34 pm
what
Reply
Amit says:
June 19, 2013 at 3:53 pm
This is really one of the best !!. Thanks a lot. Please keep sharing more.
Reply
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
45/54
12/2/2014
vivek says:
June 19, 2013 at 8:31 am
Hi,
This is regarding question 17, there you mention if map size is greater
thn threshold , hashmap rehashes the content s of hashmap into new ARRAY with
larger capacity
Dont we use linkedlist for for storing hasmap, I am beginner.
Can you please explain ?
Regards
Vivek
Reply
Pankaj says:
June 19, 2013 at 7:40 pm
Leo says:
June 11, 2013 at 4:45 pm
46/54
12/2/2014
thanks alot..
Reply
Very well written and covering almost all the interviews related
questions.great job indeed!!!
Reply
Tarun says:
June 8, 2013 at 5:22 am
nice collection of quesction thank for sharing you can also chek this link
http://www.javaaster.com/20-java-collections-interview-question-and-answers/
Reply
Good one
Reply
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
47/54
12/2/2014
Reply
shashi says:
June 6, 2013 at 10:43 am
Thanks a lot!!!
This covers everything what an individual expects
Really helpful.. keep up the good work..
Reply
Brijs says:
June 7, 2013 at 1:26 pm
Good one
Reply
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
48/54
12/2/2014
praveen says:
June 4, 2013 at 1:42 am
abc says:
May 15, 2013 at 10:21 am
Very Nice
Reply
Anupam says:
May 15, 2013 at 9:45 am
49/54
12/2/2014
Reply
Genia says:
May 14, 2013 at 12:39 am
I M Futane says:
April 20, 2013 at 2:02 am
Reply
50/54
12/2/2014
Reply
Sushil says:
February 22, 2013 at 9:35 am
Awesome collection
Reply
GNS says:
February 12, 2013 at 8:02 pm
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
51/54
12/2/2014
Links & reads for 2013 Week 5 | Martin's Weekly Curations says:
February 3, 2013 at 3:08 pm
Leave a Reply
Your email address will not be published. Required fields are marked *
Name
Website
Comment
You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym
title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q
cite=""> <strike> <strong>
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
52/54
12/2/2014
Post Comment
Popular Tags
hibernate
hibernate example
hibernate tutorial
java Arrays
java file
java io
java Thread
java xml
primefaces
primefaces example
spring tutorial
primefaces tutorial
struts 2
Tutorials
Interview Questions
Questions
Be My Friend
Hosting
struts 2 tutorial
Google+
Twitter
Powered by WordPress
53/54
12/2/2014
Java Developers
Design Patterns
http://www.journaldev.com/1330/java-collections-interview-questions-and-answers
JDBC Driver
Java Classes
Java Platform
Class Names
54/54