Collection Framework in Java
Collection Framework in Java
Collection Framework is a combination of classes and interface, which is used to store and
manipulate the data in the form of objects. It provides various classes such as ArrayList, Vector,
Stack, and HashSet, etc. and interfaces such as List, Queue, Set, etc. for this purpose.
• Arrays are always of fixed size, i.e., a user can not increase or decrease the length of the
array according to their requirement or at runtime, but In Collection, size can be changed
dynamically as per need.
• Arrays can only store homogeneous or similar type objects, but in Collection,
heterogeneous objects can be stored.
• Arrays cannot provide the ready-made methods for user requirements as sorting,
searching, etc. but Collection includes readymade methods to use.
Syntax:
2. List interface: List interface extends the Collection interface, and it is an ordered collection of
objects. It contains duplicate elements. It also allows random access of elements.
Syntax:
3. Set interface: Set (java.util.Set) interface is a collection which cannot contain duplicate
elements. It can only include inherited methods of Collection interface
Syntax:
Queue interface: Queue (java.util.Queue) interface defines queue data structure, which stores
the elements in the form FIFO (first in first out).
Syntax:
Syntax:
5. Map interface: A Map (java.util.Map) represents a key, value pair storage of elements. Map
interface does not implement the Collection interface. It can only contain a unique key but can
have duplicate elements. There are two interfaces which implement Map in java that are Map
interface and Sorted Map.
ArrayList increases its size by 50% of the Vector increases its size by doubling the array
3)
array size. size.
ArrayList is not thread-safe as it is not Vector list is thread-safe as its every method is
4)
synchronized. synchronized.
4) ArrayList provides random access. LinkedList does not provide random access.
The Iterator traverses the elements in the ListIterator traverses the elements in backward
1)
forward direction only. and forward directions both.
The Iterator can only perform remove ListIterator can perform add, remove, and set
3)
operation while traversing the collection. operation while traversing the collection.
The Iterator can traverse legacy and non- Enumeration can traverse only legacy
1)
legacy elements. elements.
• The List can contain duplicate elements whereas Set includes unique items.
• The List is an ordered collection which maintains the insertion order whereas Set is an
unordered collection which does not preserve the insertion order.
• The List interface contains a single legacy class which is Vector class whereas Set
interface does not have any legacy class.
• The List interface can allow n number of null values whereas Set interface only allows a
single null value.
• Set contains values only whereas Map contains key and values both.
• Set contains unique values whereas Map can contain unique Keys with duplicate values.
• Set holds a single number of null value whereas Map can include a single null key with n
number of null values.
• HashSet implements Set interface whereas HashMap implements the Map interface
• HashSet cannot have any duplicate value whereas HashMap can contain duplicate values
with unique keys.
• HashSet contains the only single number of null value whereas HashMap can hold a
single null key with n number of null values.
• HashMap can be sorted by Key or value whereas TreeMap can be sorted by Key.
• HashMap may contain a null key with multiple null values whereas TreeMap cannot hold
a null key but can have multiple null values.
HashMap can contain one null key and Hashtable cannot contain any null key or
2)
multiple null values. null value.
HashMap is not thread-safe, so it is useful for Hashtable is thread-safe, and it can be shared
3)
non-threaded applications. between various threads.
4) HashMap inherits the AbstractMap class Hashtable inherits the Dictionary class.
• The Collection interface provides the standard functionality of data structure to List, Set,
and Queue. However, Collections class is to sort and synchronize the collection elements.
• The Collection interface provides the methods that can be used for data structure whereas
Collections class provides the static methods which can be used for various operation on
a collection.
Syntax:
import java.util.*;
import java.io.*;
System.out.println(p.getProperty("user"));
System.out.println(p.getProperty("password"));
Output
system
oracle
The hashCode() method returns the same integer number if two keys (by calling equals()
method) are identical.
However, it is possible that two hash code numbers can have different or the same keys.
If two objects do not produce an equal result by using the equals() method, then the hashcode()
method will provide the different integer result for both the objects.
For example, Employee is a class that has 3 data members: id, name, and salary. However, we
want to check the equality of employee object by the salary. Then, we need to override the
equals() method.
• Generic confirms the stability of the code by making it bug detectable at compile time.
• Separate Chaining
• Open Addressing
23) What is the default size of load factor in hashing based collection?
The default size of load factor is 0.75. The default capacity is computed as initial capacity * load
factor. For example, 16 * 0.75 = 12. So, 12 is the default capacity of Map.
SN Array ArrayList
The Array is of fixed size, means we cannot ArrayList is not of the fixed size we can
1
resize the array as per need. change the size dynamically.
2 Arrays are of the static type. ArrayList is of dynamic size.
Arrays can store primitive data types as ArrayList cannot store the primitive data types
3
well as objects. it can only store the objects.
26) What is the difference between the length of an Array and size of ArrayList?
The length of an array can be obtained using the property of length whereas ArrayList does not
support length property, but we can use size() method to get the number of objects in the list.
3.
2. list.add("ankit");
3. list.add("nippun");
4. System.out.println(list.size());
5.
1. Arrays.asList(item)
We can convert an ArrayList to Array using toArray() method of the ArrayList class. Consider
the following syntax to convert the ArrayList to the List object.
1. List_object.toArray(new String[List_object.size()])
• Using HashSet: By using HashSet we can remove the duplicate element from the
ArrayList, but it will not then preserve the insertion order.
The Process to remove duplicate elements from ArrayList using the LinkedHashSet:
• Empty the ArrayList using clear() method, which will remove all the elements from the
list.
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
list.add(10);
list.add(50);
list.add(30);
Iterator i = list.iterator();
while(i.hasNext())
System.out.println(i.next());
Iterator i2 = list.iterator();
Collections.reverse(list);
while(i2.hasNext())
System.out.println(i2.next());
Output
10
50
30
30
50
10
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
list.add(10);
list.add(50);
list.add(30);
list.add(60);
list.add(20);
list.add(90);
Iterator i = list.iterator();
while(i.hasNext())
System.out.println(i.next());
Collections.sort(list,cmp);
while(i2.hasNext())
System.out.println(i2.next());
Output
10
50
30
60
20
90
90
60
50
30
20
10
• Using CopyOnWriteArrayList<T>
33) When to use ArrayList and LinkedList?
LinkedLists are better to use for the update operations whereas ArrayLists are better to use for
the search operations.