How to Sort LinkedHashSet Elements using Comparable Interface in Java?
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
import java.util.*;
class Student implements Comparable<Student> {
Integer marks;
Student(Integer marks) { this .marks = marks; }
public String toString() { return ( " " + this .marks); }
public int compareTo(Student stu)
{
return this .marks.compareTo(stu.marks);
}
}
class GFG {
public static void main(String[] args)
{
LinkedHashSet<Student> set = new LinkedHashSet<>();
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 ));
System.out.println(
"Before sort elements in ascending order : "
+ set);
TreeSet<Student> tree_set = new TreeSet<>(set);
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
import java.util.*;
class Student implements Comparable<Student> {
Integer marks;
Student(Integer marks) { this .marks = marks; }
public String toString() { return ( " " + this .marks); }
public int compareTo(Student stu)
{
return stu.marks.compareTo( this .marks);
}
}
class GFG {
public static void main(String[] args)
{
LinkedHashSet<Student> set = new LinkedHashSet<>();
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 ));
System.out.println(
"Before sort elements in descending order : "
+ set);
TreeSet<Student> tree_set = new TreeSet<>(set);
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
Share your thoughts in the comments
Please Login to comment...