Java Program to Implement LinkedHashSet API

This Java program is to Implement LinkedHashSet Collection API. Hash table and linked list implementation of the Set interface, with predictable iteration order. This implementation differs from HashSet in that it maintains a doubly-linked list running through all of its entries. This linked list defines the iteration ordering, which is the order in which elements were inserted into the set (insertion-order). Note that insertion order is not affected if an element is re-inserted into the set.

Here is the source code of the Java program to Implement LinkedHashSet Collection API. The Java program is successfully compiled and run on a Linux system. The program output is also shown below.

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
 
public class LinkedHashSetImp<E>
{
    private LinkedHashSet<E> linkedHashSet;
 
    /*
     * Constructs a new, empty linked hash set with the default initial capacity
     * (16) and load factor (0.75).
     */
    public LinkedHashSetImp()
    {
        linkedHashSet = new LinkedHashSet<E>();
    }
 
    /*
     * Constructs a new linked hash set with the same elements as the specified
     * collection.
     */
    public LinkedHashSetImp(Collection<? extends E> c)
    {
        linkedHashSet = new LinkedHashSet<E>(c);
    }
 
    /*
     * Constructs a new, empty linked hash set with the specified initial
     * capacity and the default load factor (0.75).
     */
    public LinkedHashSetImp(int initialCapacity)
    {
        linkedHashSet = new LinkedHashSet<E>(initialCapacity);
    }
 
    /*
     * Constructs a new, empty linked hash set with the specified initial
     * capacity and load factor.
     */
    public LinkedHashSetImp(int initialCapacity, float loadFactor)
    {
        linkedHashSet = new LinkedHashSet<E>(initialCapacity, loadFactor);
    }
 
    /* Returns the number of elements in this set (its cardinality). */
    public int size()
    {
        return linkedHashSet.size();
    }
 
    /* Returns true if this set contains no elements. */
    public boolean isEmpty()
    {
        return linkedHashSet.isEmpty();
    }
 
    /*
     * Returns true if this set contains the specified element i.e
     * returns true if and only if this set contains an element e such that
     * (o==null ? e==null : o.equals(e)).
     */
    public boolean contains(Object o)  
      throws ClassCastException,NullPointerException
    {
        return linkedHashSet.contains(o);
    }
 
    /* Returns an iterator over the elements in this set */
    public Iterator<E> iterator()
    {
        return linkedHashSet.iterator();
    }
 
    /* Returns an array containing all of the elements in this set. */
    public Object[] toArray()
    {
        return linkedHashSet.toArray();
    }
 
    /*
     * Returns an array containing all of the elements in this set; the runtime
     * type of the returned array is that of the specified array
     */
    public <T> T[] toArray(T[] a)
      throws ArrayStoreException,NullPointerException
    {
        return linkedHashSet.toArray(a);
    }
 
    /* Adds the specified element to this set if it is not already present */
    public boolean add(E e)
      throws UnsupportedOperationException,ClassCastException, NullPointerException, IllegalArgumentException     
    {
        return linkedHashSet.add(e);
    }
 
    /* Removes the specified element from this set if it is present */
    public boolean remove(Object o)
      throws ClassCastException,NullPointerException, UnsupportedOperationException
    {
        return linkedHashSet.remove(o);
    }
 
    /*
     * Returns true if this set contains all of the elements of the specified
     * collection
     */
    public boolean containsAll(Collection<?> c)
      throws ClassCastException,NullPointerException
    {
        return linkedHashSet.containsAll(c);
    }
 
    /*
     * Adds all of the elements in the specified collection to this set if
     * they're not already present
     */
    public boolean addAll(Collection<? extends E> c)
      throws UnsupportedOperationException, ClassCastException,NullPointerException, IllegalArgumentException    
    {
        return linkedHashSet.addAll(c);
    }
 
    /*
     * Retains only the elements in this set that are contained in the specified
     * collection
     */
    public boolean retainAll(Collection<?> c)
      throws UnsupportedOperationException, ClassCastException,NullPointerException
    {
        return linkedHashSet.retainAll(c);
    }
 
    /*
     * Removes from this set all of its elements that are contained in the
     * specified collection
     */
    public boolean removeAll(Collection<?> c)
      throws UnsupportedOperationException, NullPointerException,ClassCastException
    {
        return linkedHashSet.retainAll(c);
    }
 
    /* Removes all of the elements from this set */
    public void clear()
      throws UnsupportedOperationException
    {
        linkedHashSet.clear();
    }
 
    /* Compares the specified object with this set for equality */
    public boolean equals(Object o)
    {
        return linkedHashSet.equals(o);
    }
 
    /* Returns the hash code value for this set */
    public int hashCode()
    {
        return linkedHashSet.hashCode();
    }
 
    public static void main(String... arg)
    {
        LinkedHashSetImp<Integer> linkedHashSet = new LinkedHashSetImp<Integer>();
        linkedHashSet.add(10);
        linkedHashSet.add(20);
        linkedHashSet.add(30);
        linkedHashSet.add(40);
        linkedHashSet.add(50);
 
        System.out.println("the size of the linkedhashset is : " + linkedHashSet.size());
 
        System.out.println("the elements in linkedhashset are :");
        Iterator<Integer> iterator = linkedHashSet.iterator();
        while(iterator.hasNext())
        { 
            System.out.print(iterator.next() + "\t");
        }
        System.out.println();
 
        System.out.println("element 40 removed is " + linkedHashSet.remove(40));
        if(linkedHashSet.isEmpty())
            System.out.println("the linkedHashset is empty");
        else
            System.out.println("the linkedhashset is not empty");
 
        Set<Integer> retainedSet = new HashSet<Integer>();
        retainedSet.add(10);
        retainedSet.add(20);
 
        System.out.println("the elements retained in LinkedhashSet");
        linkedHashSet.retainAll(retainedSet);
        Iterator<Integer> riterator = linkedHashSet.iterator();
        while(riterator.hasNext())
        {
            System.out.print(riterator.next() + "\t");
        }
        System.out.println();
 
        linkedHashSet.clear();
        System.out.println("the linkedHashSet cleared");
        if(linkedHashSet.isEmpty())
            System.out.println("the linkedHashSet is empty");
        else
            System.out.println("the linkedHashSet is not empty");
 
    }
}
$javac LinkedHashSetImp.java
$java LinkedHashSetImp
 
the size of the linkedhashset is : 5
the elements in linkedhashset are :
 10	20	30	40	50	
element 40 removed is true
the linkedhashset is not empty
the elements retained in LinkedhashSet
10	20	
the linkedHashSet cleared
the linkedHashSet is empty

Related posts:

Introduction to Spring Cloud Netflix – Eureka
Java Program to Implement RenderingHints API
Hướng dẫn Java Design Pattern – Object Pool
A Guide to the Java ExecutorService
Converting between an Array and a List in Java
Java Program to Find SSSP (Single Source Shortest Path) in DAG (Directed Acyclic Graphs)
Bootstrapping Hibernate 5 with Spring
Guide to CopyOnWriteArrayList
Java Program to Find the Nearest Neighbor Using K-D Tree Search
Map Serialization and Deserialization with Jackson
Java Program to Find the Longest Path in a DAG
Java Program to Implement Graph Structured Stack
Spring Webflux and CORS
Spring Boot - Sending Email
Java Program to Implement Meldable Heap
Java Program to Perform Insertion in a BST
Java Program to Perform Left Rotation on a Binary Search Tree
Cài đặt và sử dụng Swagger UI
Java Program to find the peak element of an array using Binary Search approach
Hướng dẫn sử dụng biểu thức chính quy (Regular Expression) trong Java
Java Program to Find Transpose of a Graph Matrix
Java Program to Implement Sorted List
Spring Data JPA Delete and Relationships
HTTP Authentification and CGI/Servlet
Java Optional as Return Type
Upload and Display Excel Files with Spring MVC
Spring Data JPA @Modifying Annotation
A Quick Guide to Spring Cloud Consul
Java Program to Find MST (Minimum Spanning Tree) using Prim’s Algorithm
Java Program to Represent Graph Using Adjacency Matrix
Java Program to Generate a Graph for a Given Fixed Degree Sequence
Finding the Differences Between Two Lists in Java