Как отсортировать элементы LinkedHashSet с помощью сопоставимого интерфейса в Java?

Опубликовано: 29 Января, 2022

TheLinkedHashSet - это упорядоченная версия HashSet, которая поддерживает двусвязный список для всех элементов. Когда необходимо поддерживать порядок итераций, используется этот класс. При итерации через HashSet порядок непредсказуем, в то время как LinkedHashSet позволяет нам перебирать элементы в том порядке, в котором они были вставлены.

Чтобы сначала отсортировать элементы LinkedHashSet с использованием интерфейса Comparable в java, мы создаем класс Student, который реализует интерфейс Comparable. В этом классе мы переопределяем метод compareTo ().

 // Студенческий класс реализует сопоставимый интерфейс

class Student реализует Comparable <Student> {
    Целочисленные знаки;

    Студент (целые знаки) {
        this.marks = знаки;
    }

    // переопределить метод toString
    public String toString () {
        return ("" + this.marks);
    }

    // Переопределить метод compareTo для сортировки LinkedHashSet в порядке возрастания
    public int compareTo (Студенческий курс) {
        вернуть this.marks.compareTo (stu.marks);
    }
}

Затем мы передаем набор конструктору TreeSet для сортировки элементов.

 // TreeSet для сортировки LinkedHashSet с использованием сопоставимых
TreeSet <Student> tree_set = new TreeSet <> (набор);

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
    // accending 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 accending 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 accending order : "
            + tree_set);
    }
}
Output

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