Tutorial Playlist
Java is one of the major programming languages, with more than 33.27% of users around the globe. Developed in 1991 by James Gosling of Sun Microsystems, Inc., this language quickly grew a user base and boasted a rich system.
Java collections offer a one-stop destination for all sorts of data manipulation tasks. It is an all the more perfect opportunity to start learning the language.
If you're looking at Java collection framework notes, you've landed at the right place. This tutorial will examine how to utilize best practices using the Java framework.
While working on the Java collection library, we'll employ the latest developments and ensure better learning of Java. Let's begin our journey into Java's collection framework in depth.
The Java collection framework is a set of interfaces and classes working to offer a unified front. This framework works towards storing and manipulating collections of objects.
One of the essentials of the Java language, it provides the interface for several data structures. These include lists, maps, sets, and queues. Classes involve ArrayList, PriorityQueue, TreeSet, Vector, and others.
A Java collection is a group of objects that represent a single unit. It is based on a framework that offers a network to store and manipulate data as a group of objects. Its features include:
The Java Collections Framework is a set of classes and interfaces containing popular data structures. It was introduced to allow coders to work with different types of collections depending on their immediate needs.
The Java collection framework is designed to carry out simple tasks such as sorting and searching. These include lists, sets, queues, deques, and maps. Much like the list interface, the map interface offers methods for adding, removing, and searching pairs.
It is a core portion of Java, and the 'Collection Framework' can be found in JDK 1.2.
As Java was still in its initial stages, the Java collections weren't accessible back in 1998. As the collection framework was incredibly complicated, and it was difficult in the first release. Additionally, the language designers wanted to test and debug before introducing complex features.
With the release of JDK 1.2 and Java.util package containing the tools, the Java Collection Framework was ready for users.
Collection | Collection Framework |
The collection is an interface. | The collections framework is a library. |
The collections interface represents a group of objects. | The collections framework consists of a set of classes and interfaces. |
The collections interface offers a basic set of operations such as add(), remove(), contains(), etc. | The collections framework offers a more complicated operations like sorting, shuffling, searching, and reversing. |
It can be used with a single object type. | The collections framework works with different types of objects. |
It provides fundamentals for manipulating content in a collection. | The collection framework deals with a list of advanced methods for content manipulation. |
The collection framework is a versatile library that offers the following advantages -
It maintains a set of interfaces like Set, Collection, Map, and List, along with the classes (ArrayList, Vector, LinkedList) for carrying out the implementations.
It encourages object-oriented programming or abstraction. Simultaneously, it can help them focus on utilizing the other parts of the program.
With the collections framework, a programmer doesn't have to consider implementing a data structure anymore. Instead, they can utilize the most effective performance, drastically improving speed and quality.
The collection framework is based on a hierarchical structure of classes and interfaces. It is organized into two branches - the map and the collection branches.
The map branch is divided into Mapo, SortedMap, and NavigableMap interfaces, which store key-value data.
The collection branch is divided into Set, List, and Queue interfaces, which store data similarly.
There are specialized collection classes like Vector and Hashtable, which provide high-performance implementations.
Some standard collection interfaces are:
1. add() - It adds an object to the existing collection.
2. remove() - It adds elements in the existing collection to the collection.
3. contains() - This method determines whether the collection contains an element.
4. size() - It returns the total number of elements in the collection.
5. spiterator() - It creates a Spliterator over the elements.
6. toArray() -It returns an array of all collection elements.
7. clear() - It removes every element from the collection.
8. stream() - It returns a sequential stream as a source.
9. retainAll() - It retains only specific elements in a collection.
10. removeAll() - It removes every oa collection.
11. equals() - It compares specified objects based on equality.
12. hashCode() - It returns the hash code for each collection.
An iterable interface is an object where the elements can be accessed sequentially.
Iterator iterator();
A collection interface is an object divided into an array, set, list, or Map.
interface Collection<E>
The list interface is an abstract data type specifying listicle operations.
interface [interface-name] {
[interface-properties]
};
The collection framework works with several classes, which are demonstrated below:
1. ArrayList
The ArrayList works like an array. It can dynamically grow and shrink per the requirement of the programmer.
import java.util.*;
class MyArrayList {
public static void main(String[] args) {
ArrayList<String> myStrings = new ArrayList<String>(); // Creating ArrayList
myStrings.add("Alice"); // Adding object in ArrayList
myStrings.add("Roland");
myStrings.add("Anny");
myStrings.add("Charlie");
// Traversing ArrayList through Iterator
Iterator<String> iterator = myStrings.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
2. LinkedList
The LinkedList stores data linearly. It works with the help of nodes connected like pointers and can store a large amount of data.
import java.util.*;
public class MyLinkedList {
public static void main(String[] args) {
LinkedList<String> myStrings = new LinkedList<String>(); // Creating LinkedList
myStrings.add("Brianne"); // Adding object in LinkedList
myStrings.add("Bart");
myStrings.add("Archie");
myStrings.add("Garry");
Iterator<String> iterator = myStrings.iterator(); // Traversing LinkedList through Iterator
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
3. Vector
Vector allows for storage and retrieval of data in a compact form.
import java.util.*;
public class MyVector {
public static void main(String[] args) {
Vector<String> myStrings = new Vector<String>(); // Creating Vector
myStrings.add("Mert"); // Adding object in Vector
myStrings.add("Ashley");
myStrings.add("Bob");
myStrings.add("Barry");
Iterator<String> iterator = myStrings.iterator(); // Traversing Vector through Iterator
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
4. Stack
Stack comes under Vector and a legacy class and employs the last-in-first-out concept.
import java.util.*;
public class MyStack {
public static void main(String[] args) {
Stack<String> myStack = new Stack<String>(); // Creating Stack
myStack.push("Tina"); // Adding object in Stack
myStack.push("Alexa");
myStack.push("Mary");
myStack.push("John");
myStack.pop();
Iterator<String> iterator = myStack.iterator(); // Traversing Stack through Iterator
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
5. Queue Interface
The queue interface is also based on the FIFO principle and is akin to a real-world queue line.
Queue<String> q1 = new PriorityQueue();
Queue<String> q2 = new ArrayDeque();
a) Priority Queue
A priority queue is a type of data structure in which each element has priority.
import java.util.*;
public class MyPriorityQueue {
public static void main(String[] args) {
PriorityQueue<String> myQueue = new PriorityQueue<String>(); // Creating PriorityQueue
myQueue.add("Kim"); // Adding object in PriorityQueue
myQueue.add("Jimmy");
myQueue.add("Jack");
myQueue.add("George");
System.out.println("head:"+myQueue.element());
System.out.println("head:"+myQueue.peek());
System.out.println("iterating the queue elements:");
Iterator<String> iterator = myQueue.iterator(); // Traversing PriorityQueue through Iterator
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
myQueue.remove();
myQueue.poll();
System.out.println("after removing two elements:");
Iterator<String> iterator2 = myQueue.iterator();
while (iterator2.hasNext()) {
System.out.println(iterator2.next());
}
}
}
6. Deque Interface
The deque interface allows for easy adding and removal of elements from both ends of a queue.
Deque d = new ArrayDeque();
a) Array Deque
An array queue stores objects in a double-ended queue or deque.
import java.util.*;
public class MyDeque {
public static void main(String[] args) {
Deque<String> myDeque = new ArrayDeque<String>(); // Creating Deque and adding elements
myDeque.add("Jenny");
myDeque.add("Kate");
myDeque.add("Alex");
// Traversing elements
for (String str : myDeque) {
System.out.println(str);
}
}
}
7. Set Interface
A set interface is an unordered collection of objects that does not allow duplicate values to be stored.
Set<data-type> s1 = new HashSet<data-type>();
Set<data-type> s2 = new LinkedHashSet<data-type>();
Set<data-type> s3 = new TreeSet<data-type>();
The following classes implement the Set interface:
1. Hash Set
A hash set is a type of data structure that stores and retrieves data in an unorganized manner. It does not maintain an ordering over its elements.
import java.util.*;
public class TestJavaCollection7{
public static void main(String args[]){
//Creating HashSet and adding elements
HashSet<String> set=new HashSet<String>();
set.add("Stella");
set.add("Robert");
set.add("Kevin");
set.add("Ben");
//Traversing elements
Iterator<String> itr=set.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}
2. Linked Hash Set
The LinkedHashSet has the same characteristics as a HashSet. However, it is different because it uses a doubly linked list to store data and retain elements.
import java.util.*;
public class MyLinkedHashSet {
public static void main(String[] args) {
LinkedHashSet<String> mySet = new LinkedHashSet<String>(); // Creating LinkedHashSet
mySet.add("Arun"); // Adding elements in LinkedHashSet
mySet.add("Vineet");
mySet.add("Abhishek");
mySet.add("Sapna");
Iterator<String> iterator = mySet.iterator(); // Traversing LinkedHashSet through Iterator
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
3. Sorted Set Interface
A set interface provides a set of methods for operations on a set for sorting a specific order.
SortedSet<data-type> set = new TreeSet();
The class implementing the sorted set interface is TreeSet.
i) Tree Set
A TreeSet is a collection of elements in a tree-like structure. It is similar to a HashSet, but it stores elements ascendingly.
import java.util.*;
public class TestJavaCollection9 {
public static void main(String args[]) {
// Creating and adding elements
TreeSet<String> set = new TreeSet<String>();
set.add("Chris");
set.add("Raj");
set.add("Albin");
set.add("Rahul");
// Traversing elements
Iterator<String> itr = set.iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
}
}
}
4. Map Interface
The map interface utilizes an object that maps keys to values. It isn't a subtype of the collection interface.
The frequently used implementation of a Map interface is a HashMap.
i) Hash Map
HashMap utilizes a hash table for storing data. It holds key-value pairs and uses a hash key for accessing the element.
import java.util.*;
public class HashMapDemo {
public static void main(String[] args) {
// Create a hash map
HashMap<String, Double> accountBalances = new HashMap<String, Double>();
// Put elements to the map
accountBalances.put("Akash", new Double(3434.34));
accountBalances.put("Manish", new Double(123.22));
accountBalances.put("Arya", new Double(1378.00));
accountBalances.put("Suman", new Double(99.22));
accountBalances.put("Zainab", new Double(-19.08));
// Get a set of the entries
Set<Map.Entry<String, Double>> entries = accountBalances.entrySet();
// Get an iterator
Iterator<Map.Entry<String, Double>> iterator = entries.iterator();
// Display elements
while(iterator.hasNext()) {
Map.Entry<String, Double> entry = iterator.next();
System.out.print(entry.getKey() + ": ");
System.out.println(entry.getValue());
}
System.out.println();
// Deposit 1000 into Akash account
double balance = accountBalances.get("Akash").doubleValue();
accountBalances.put("Akash", new Double(balance + 1000));
System.out.println("Akash’s new balance: " + accountBalances.get("Akash"));
}
}
The Java collections are an invaluable tool for developers. They are helpful as they offer a powerful and efficient way of managing data collection.
Java collection's multi-level approach helps developers save time and effort when programming. It consists of multiple valuable data structures that can store and manage data according to a programmer's needs.
Knowing Java collections is essential for a developer who wants to make the most out of their code while, at the same time, also saving up on time.
1. Which is the fastest collection in the Java collections framework?
The HashSet collection is the fastest in Java. In the same way, the LinkedHashSet collection is an excellent asset to developers looking to insert the order of elements.
2. How is a collection different from collections?
A collection is a unified interface, whereas collections form a class of objects.
3. Which are the top collection types in the Java framework?
The linear format, namely ArrayList and LinkedList, are the most comprehensive collection types in the Java framework.
PAVAN VADAPALLI
popular
Talk to our experts. We’re available 24/7.
Indian Nationals
1800 210 2020
Foreign Nationals
+918045604032
upGrad does not grant credit; credits are granted, accepted or transferred at the sole discretion of the relevant educational institution offering the diploma or degree. We advise you to enquire further regarding the suitability of this program for your academic, professional requirements and job prospects before enrolling. .