Java LinkedHashSet Example

In this tutorial, we will explore the LinkedHashSet class in Java, which is a specialized implementation of the Set interface. Unlike the standard HashSet, LinkedHashSet maintains the insertion order of its elements. This tutorial will demonstrate how to use LinkedHashSet with examples, covering all important operations and different ways for iteration using Java 8 features.

Table of Contents

  1. Introduction
  2. Prerequisites
  3. Step-by-Step Guide
    1. Creating a LinkedHashSet
    2. Adding and Retrieving Elements
    3. Iterating Over the Set
    4. Removing Elements
  4. Complete Code Example
  5. Conclusion

Introduction

LinkedHashSet is a part of Java's java.util package and extends HashSet. It maintains a doubly-linked list running through all of its entries, ensuring the order of the elements is preserved based on their insertion order. This makes LinkedHashSet useful in scenarios where the order of elements is important.

Prerequisites

Before we start, ensure you have the following:

  • Java Development Kit (JDK) installed (latest version preferred)
  • An Integrated Development Environment (IDE) such as IntelliJ IDEA or Eclipse

Step-by-Step Guide

Step 1: Creating a LinkedHashSet

First, let's create a LinkedHashSet and add some elements to it.

import java.util.LinkedHashSet;
import java.util.Set;

public class LinkedHashSetExample {
    public static void main(String[] args) {
        // Create a LinkedHashSet
        Set<String> linkedSet = new LinkedHashSet<>();

        // Add elements to the set
        linkedSet.add("Ravi");
        linkedSet.add("Sita");
        linkedSet.add("Arjun");
        linkedSet.add("Lakshmi");

        // Print the set
        System.out.println("LinkedHashSet: " + linkedSet);
    }
}

Output:

LinkedHashSet: [Ravi, Sita, Arjun, Lakshmi]

Step 2: Adding and Retrieving Elements

Let's add some elements to the LinkedHashSet and check if certain elements are present.

public class LinkedHashSetExample {
    public static void main(String[] args) {
        // Create a LinkedHashSet
        Set<String> linkedSet = new LinkedHashSet<>();

        // Add elements to the set
        linkedSet.add("Ravi");
        linkedSet.add("Sita");
        linkedSet.add("Arjun");
        linkedSet.add("Lakshmi");

        // Check if elements are present
        System.out.println("Contains Ravi: " + linkedSet.contains("Ravi"));
        System.out.println("Contains Gopal: " + linkedSet.contains("Gopal"));
    }
}

Output:

Contains Ravi: true
Contains Gopal: false

Step 3: Iterating Over the Set

We can iterate over the LinkedHashSet using a for-each loop, iterator, and Java 8 features like forEach and streams.

Using For-Each Loop

public class LinkedHashSetExample {
    public static void main(String[] args) {
        // Create a LinkedHashSet
        Set<String> linkedSet = new LinkedHashSet<>();

        // Add elements to the set
        linkedSet.add("Ravi");
        linkedSet.add("Sita");
        linkedSet.add("Arjun");
        linkedSet.add("Lakshmi");

        // Iterate over the set using for-each loop
        System.out.println("Iterating over LinkedHashSet using for-each loop:");
        for (String element : linkedSet) {
            System.out.println(element);
        }
    }
}

Output:

Iterating over LinkedHashSet using for-each loop:
Ravi
Sita
Arjun
Lakshmi

Using Iterator

import java.util.Iterator;

public class LinkedHashSetExample {
    public static void main(String[] args) {
        // Create a LinkedHashSet
        Set<String> linkedSet = new LinkedHashSet<>();

        // Add elements to the set
        linkedSet.add("Ravi");
        linkedSet.add("Sita");
        linkedSet.add("Arjun");
        linkedSet.add("Lakshmi");

        // Iterate over the set using iterator
        System.out.println("Iterating over LinkedHashSet using iterator:");
        Iterator<String> iterator = linkedSet.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}

Output:

Iterating over LinkedHashSet using iterator:
Ravi
Sita
Arjun
Lakshmi

Using forEach and Lambda Expression (Java 8)

public class LinkedHashSetExample {
    public static void main(String[] args) {
        // Create a LinkedHashSet
        Set<String> linkedSet = new LinkedHashSet<>();

        // Add elements to the set
        linkedSet.add("Ravi");
        linkedSet.add("Sita");
        linkedSet.add("Arjun");
        linkedSet.add("Lakshmi");

        // Iterate over the set using forEach and lambda
        System.out.println("Iterating over LinkedHashSet using forEach and lambda:");
        linkedSet.forEach(element -> System.out.println(element));
    }
}

Output:

Iterating over LinkedHashSet using forEach and lambda:
Ravi
Sita
Arjun
Lakshmi

Using Streams (Java 8)

import java.util.stream.Collectors;

public class LinkedHashSetExample {
    public static void main(String[] args) {
        // Create a LinkedHashSet
        Set<String> linkedSet = new LinkedHashSet<>();

        // Add elements to the set
        linkedSet.add("Ravi");
        linkedSet.add("Sita");
        linkedSet.add("Arjun");
        linkedSet.add("Lakshmi");

        // Iterate over the set using streams
        System.out.println("Iterating over LinkedHashSet using streams:");
        linkedSet.stream().forEach(System.out::println);

        // Convert LinkedHashSet to a List using streams
        System.out.println("LinkedHashSet to List:");
        linkedSet.stream().collect(Collectors.toList()).forEach(System.out::println);
    }
}

Output:

Iterating over LinkedHashSet using streams:
Ravi
Sita
Arjun
Lakshmi
LinkedHashSet to List:
Ravi
Sita
Arjun
Lakshmi

Step 4: Removing Elements

Let's remove elements from the LinkedHashSet and demonstrate the use of remove method.

public class LinkedHashSetExample {
    public static void main(String[] args) {
        // Create a LinkedHashSet
        Set<String> linkedSet = new LinkedHashSet<>();

        // Add elements to the set
        linkedSet.add("Ravi");
        linkedSet.add("Sita");
        linkedSet.add("Arjun");
        linkedSet.add("Lakshmi");

        // Remove an element
        linkedSet.remove("Arjun");

        // Print the set after removal
        System.out.println("LinkedHashSet after removal: " + linkedSet);
    }
}

Output:

LinkedHashSet after removal: [Ravi, Sita, Lakshmi]

Complete Code Example

Here's the complete code example demonstrating various operations with LinkedHashSet:

import java.util.LinkedHashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.stream.Collectors;

public class LinkedHashSetExample {
    public static void main(String[] args) {
        // Create a LinkedHashSet
        Set<String> linkedSet = new LinkedHashSet<>();

        // Add elements to the set
        linkedSet.add("Ravi");
        linkedSet.add("Sita");
        linkedSet.add("Arjun");
        linkedSet.add("Lakshmi");

        // Retrieve and check if elements are present
        System.out.println("Contains Ravi: " + linkedSet.contains("Ravi"));
        System.out.println("Contains Gopal: " + linkedSet.contains("Gopal"));

        // Iterate over the set using for-each loop
        System.out.println("Iterating over LinkedHashSet using for-each loop:");
        for (String element : linkedSet) {
            System.out.println(element);
        }

        // Iterate over the set using iterator
        System.out.println("Iterating over LinkedHashSet using iterator:");
        Iterator<String> iterator = linkedSet.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }

        // Iterate over the set using forEach and lambda
        System.out.println("Iterating over LinkedHashSet using forEach and lambda:");
        linkedSet.forEach(element -> System.out.println(element));

        // Iterate over the set using streams
        System.out.println("Iterating over LinkedHashSet using streams:");
        linkedSet.stream().forEach(System.out::println);

        // Convert LinkedHashSet to a List using streams
        System.out.println("LinkedHashSet to List:");
        linkedSet.stream().collect(Collectors.toList()).forEach(System.out::println);

        // Remove an element
        linkedSet.remove("Arjun");
        System.out.println("LinkedHashSet after removal: " + linkedSet);
    }
}

Output:

Contains Ravi: true
Contains Gopal: false
Iterating over LinkedHashSet using for-each loop:
Ravi
Sita
Arjun
Lakshmi
Iterating over LinkedHashSet using iterator:
Ravi
Sita


Arjun
Lakshmi
Iterating over LinkedHashSet using forEach and lambda:
Ravi
Sita
Arjun
Lakshmi
Iterating over LinkedHashSet using streams:
Ravi
Sita
Arjun
Lakshmi
LinkedHashSet to List:
Ravi
Sita
Arjun
Lakshmi
LinkedHashSet after removal: [Ravi, Sita, Lakshmi]

Conclusion

In this tutorial, we demonstrated how to use the LinkedHashSet class in Java. We covered creating a LinkedHashSet, adding and retrieving elements, iterating over the set using various methods, and removing elements. By following this guide, developers can effectively use LinkedHashSet in scenarios where the order of elements is important.

Comments