Sobes.tech
Junior

What is a LinkedHashSet?

sobes.tech AI

Answer from AI

LinkedHashSet is an implementation of the Set interface that maintains the insertion order of elements. It is a combination of HashSet and LinkedList.

Features:

  • Unique elements: Like HashSet, LinkedHashSet does not allow duplicates.
  • Order preservation: Elements are iterated in the order they were added. This is achieved by using a doubly linked list to link the elements in insertion order.
  • Performance: Operations such as adding, removing, and searching for elements generally have a time complexity of O(1). However, iteration over LinkedHashSet can be slightly faster than over HashSet because it is based on a linked list rather than traversing a hash table.
  • Null allowance: Permits one element with a null value.

Example usage:

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

// Creating a LinkedHashSet
Set<String> linkedHashSet = new LinkedHashSet<>();

// Adding elements
linkedHashSet.add("Apple");
linkedHashSet.add("Banana");
linkedHashSet.add("Orange");
linkedHashSet.add("Banana"); // This element will not be added again

// Printing elements
System.out.println(linkedHashSet); // Outputs: [Apple, Banana, Orange]

// Checking for an element
boolean containsBanana = linkedHashSet.contains("Banana"); // true

// Removing an element
linkedHashSet.remove("Apple");

// Printing elements after removal
System.out.println(linkedHashSet); // Outputs: [Banana, Orange]

// Iterating over elements (in insertion order)
for (String fruit : linkedHashSet) {
    System.out.println(fruit);
}

Difference from HashSet:

Feature HashSet LinkedHashSet
Element order Not guaranteed (depends on hash code) Preserves insertion order
Internal structure Hash table Hash table + doubly linked list
Iteration Unpredictable order In insertion order
Performance Average O(1) for main operations Average O(1) for main operations, iteration is faster

LinkedHashSet is useful when you need a collection of unique elements that also preserves the order of insertion.