StackTips
 13 minutes

Java Collection Complete Tutorial with Examples

By Nilanchala @nilan, On Mar 05, 2024 Java 2.45K Views

In this tutorial we’ll see the core collection interface available in java and their behavior. Examples in each section will show you the implementation and usage of various collection interfaces.

Introduction to Java collection API

Java Collections API is a set of interface and implementations included in the java standard library. A collection is a container that holds multiple objects into single unit. Different collection has their own purpose and behaviors. All collection interfaces and classes are available under java.util package.
Collection interfaces are the abstract behavior of each collection.

Collection Interface

Collection interface is the root of collection hierarchy and it represents general purpose behavior for the entire interface in this hierarchy. It doesn’t have a concrete implementation.

Set Interface

  • A set is a collection that doesn’t allow duplicate entries. A set has the same methods as the collection interface. It can contain at least one 1 null element.
  • The set implementations are HashSet, LinkedHashSet and TreeSet.
  • Element in HashSet, LinkedHashSet are not sorted but TreeSet is sorted.

Example: SetExample.java

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class SetExample {
  public static void main(String args[]) { 
     int count[] = {34, 22,10,60,30,22};
     Set<Integer> set = new HashSet<Integer>();
     try{
        for(int i = 0; i<5; i++){
           set.add(count[i]);
        }
        System.out.println("Initial Set=" + set);        

        set.remove(30);        
        System.out.println("Values after delete=" + set);

        System.out.println("Retrieving Values");        
        Iterator<Integer> iterator = set.iterator();
        while(iterator.hasNext()){
        	System.out.println(iterator.next());
        }     

     }
     catch(Exception e){}
  }
}

Output

Initial Set=[34, 22, 10, 30, 60]
Values after delete=[34, 22, 10, 60]
Retrieving Values
34
22
10
60

HashSet

  • HashSet is an abstract implementation of Set interface. It creates a collection that uses a hash table for storing the elements.
  • A HashTable uses hashing mechanism to store the objects. Hashing means, a key is used to determine a unique value, called its hash code. Every hash code represents a data associated with key.

For example, please refer the previous example block

LinkedHashSet

  • LinkedHashSet maintains a linked list of the entries in the set.
  • The elements are stored in the order in which they were inserted.
  • While retrieving the LinkedHashSet elements using an Iterator, the elements will be returned in the order in which they were inserted.

Example: LinkedHashSetExample.java

import java.util.Iterator;
import java.util.LinkedHashSet;

public class LinkedHashSetExample {
	public static void main(String args[]) {
		int count[] = { 34, 22, 10, 60, 30, 22, 25 };
		LinkedHashSet<Integer> set = new LinkedHashSet<Integer>();

		try {
			for (int i = 0; i < 7; i++) {
				set.add(count[i]);
			}
			System.out.println("Initial Set=" + set);

			set.remove(30);
			System.out.println("Values after delete=" + set);

			System.out.println("Retrieving Values");
			Iterator<Integer> iterator = set.iterator();
			while (iterator.hasNext()) {
				System.out.println(iterator.next());
			}

		} catch (Exception e) {
		}
	}
}

Output

Initial Set=[34, 22, 10, 60, 30, 25]
Values after delete=[34, 22, 10, 60, 25]
Retrieving Values
34
22
10
60
25

TreeSet

TreeSet is a Set implementation that uses tree concept for storing object. It stores the elements in sorted order. Accessing TreeSet is quite faster than other set implementations.

TreeSet Example

Example: TreeSetExample.java

import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class TreeSetExample {

	public static void main(String args[]) {
		int count[] = { 14, 43, 10, 55, 30, 22,40};
		Set<Integer> set = new TreeSet<Integer>();
		try {
			for (int i = 0; i < 6; i++) {
				set.add(count[i]);
			}
			System.out.println("Intial Set=" + set);

			set.remove(30);
			System.out.println("Values after delete=" + set);

			System.out.println("Retrieving Values");
			Iterator<Integer> iterator = set.iterator();
			while (iterator.hasNext()) {
				System.out.println(iterator.next());
			}

		} catch (Exception e) {
		}
	}
}

Output

Intial Set=[10, 14, 22, 30, 43, 55]
Values after delete=[10, 14, 22, 43, 55]
Retrieving Values
10
14
22
43
55

List Interface

  • A List is an ordered collection of elements
  • It may contain duplicate
  • The indexing of the elements is similar to Array. The first index of List is zero.
  • The elements can be manipulated based on their indexed positions
  • Common List implementations are ArrayList and LinkedList

ArrayList 

The ArrayList class extends AbstractList and implements the List interface. ArrayList supports dynamic arrays that can grow as needed. Array lists are created with an initial size. When this size is exceeded, the collection is automatically enlarged. When objects are removed, the array may be shrunk.

Loop ArrayList In Java

Sort an ArrayList in java

LinkedList

The LinkedList class extends AbstractSequentialList and implements the List interface. It provides a linked-list data structure.

import java.util.LinkedList;

public class LinkedListExample {
	public static void main(String args[]) {
		// create a linked list
		LinkedList<String> list = new LinkedList<String>();
		list.add("F");
		list.add("E");
		list.add("D");
		list.add("E");
		list.add("C");
		list.addLast("G");
		list.addFirst("B");
		list.add(1, "E1");
		System.out.println("Values of LinkedList=" + list);

		// remove first and last elements
		list.removeFirst();
		list.removeLast();
		System.out.println("After deleting first and last= " + list);

		// remove elements from the linked list
		list.remove("C");
		list.remove(4);
		System.out.println("After Delete" + list);
	}
}

Output

Values of LinkedList=[B, E1, F, E, D, E, C, G]
After deleting first and last= [E1, F, E, D, E, C]
After Delete[E1, F, E, D]
nilan avtar

Nilanchala

I'm a blogger, educator and a full stack developer. Mainly focused on Java, Spring and Micro-service architecture. I love to learn, code, make and break things.