Open In App

How to Sort LinkedHashSet Elements using Comparable Interface in Java?

Improve
Improve
Like Article
Like
Save
Share
Report

The LinkedHashSet is an ordered version of HashSet that maintains a doubly-linked List across all elements. When the iteration order is needed to be maintained this class is used. When iterating through a HashSet the order is unpredictable, while a LinkedHashSet lets us iterate through the elements in the order in which they were inserted.

To sort LinkedHashSet elements using Comparable interface in java first, we create a class Student that implements the Comparable interface. In this class, we override the compareTo() method.

// Student class implements comparable interface

class Student implements Comparable<Student> {
    Integer marks;

    Student(Integer marks) {
        this.marks = marks;
    }

    // override toString method
    public String toString() {
        return (" " + this.marks);
    }

    // Override compareTo method to sort LinkedHashSet in ascending order
    public int compareTo(Student stu) {
        return this.marks.compareTo(stu.marks);
    }
}

And then we pass the set to the TreeSet constructor to sort the elements.

// TreeSet to sort LinkedHashSet using comparable
TreeSet<Student> tree_set = new TreeSet<>(set);

Example 1

Java




// Java program demonstrate how to Sort LinkedHashSet using
// Comparable interface
import java.util.*;
 
// Student class implements comparable interface
class Student implements Comparable<Student> {
    Integer marks;
 
    Student(Integer marks) { this.marks = marks; }
 
    // override toString method
    public String toString() { return (" " + this.marks); }
 
    // Override compareTo method to sort LinkedHashSet in
    // ascending order
    public int compareTo(Student stu)
    {
        return this.marks.compareTo(stu.marks);
    }
}
 
class GFG {
    public static void main(String[] args)
    {
 
        // New LinkedHashSet
        LinkedHashSet<Student> set = new LinkedHashSet<>();
 
        // Adding elements to the set
        set.add(new Student(500));
        set.add(new Student(300));
        set.add(new Student(400));
        set.add(new Student(100));
        set.add(new Student(200));
 
        // Print Before sort
        System.out.println(
            "Before sort elements in ascending order : "
            + set);
 
        // TreeSet to sort LinkedHashSet using comparable
        TreeSet<Student> tree_set = new TreeSet<>(set);
 
        // Print after sorting
        System.out.println(
            "After sort elements in ascending order : "
            + tree_set);
    }
}


Output

Before sort elements in ascending order : [ 500,  300,  400,  100,  200]
After sort elements in ascending order : [ 100,  200,  300,  400,  500]

Example 2

Java




// Java program demonstrate how to Sort LinkedHashSet using
// Comparable interface
import java.util.*;
 
// Student class implements comparable interface
class Student implements Comparable<Student> {
    Integer marks;
 
    Student(Integer marks) { this.marks = marks; }
 
    // override toString method
    public String toString() { return (" " + this.marks); }
 
    // Override compareTo method to sort LinkedHashSet in
    // descending order
    public int compareTo(Student stu)
    {
        return stu.marks.compareTo(this.marks);
    }
}
 
class GFG {
    public static void main(String[] args)
    {
 
        // New LinkedHashSet
        LinkedHashSet<Student> set = new LinkedHashSet<>();
 
        // Adding elements to the set
        set.add(new Student(500));
        set.add(new Student(300));
        set.add(new Student(400));
        set.add(new Student(100));
        set.add(new Student(200));
 
        // Print Before sort
        System.out.println(
            "Before sort elements in descending order : "
            + set);
 
        // TreeSet to sort LinkedHashSet using comparable
        TreeSet<Student> tree_set = new TreeSet<>(set);
 
        // Print after sorting
        System.out.println(
            "After sort elements in descending order : "
            + tree_set);
    }
}


Output:

Before sort elements in descending order : [ 500,  300,  400,  100,  200]
After sort elements in descending order : [ 500,  400,  300,  200,  100]
 


Last Updated : 04 Oct, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads