📌  相关文章
📜  如何在Java中对 LinkedHashSet 进行排序?

📅  最后修改于: 2022-05-13 01:54:26.251000             🧑  作者: Mango

如何在Java中对 LinkedHashSet 进行排序?

LinkedHashSet 是 HashSet 的有序版本,它在所有元素之间维护一个双向链表。当遍历 HashSet 时,顺序是不可预测的,而 LinkedHashSet 允许我们按照元素插入的顺序遍历元素。当使用迭代器循环遍历 LinkedHashSet 时,元素将按照它们被插入的顺序返回。

在Java中可以通过三种方式对 LinkedHashSet 进行排序。以下是:

  • 使用 ArrayList
  • 使用树集
  • 使用流

方法一(使用ArrayList)

在此方法中,我们将 LinkedHashSet 转换为 ArrayList,然后使用 集合类的 sort()方法

// Convert LinkedHashSet to an ArrayList
ArrayList array = new ArrayList<>(set);

// sort ArrayList
Collections.sort(array);

宣言

public static void sort(List myList)

参数: myList是我们要排序的对象。

例子:

Java
// Java program to demonstrate how to sort LinkedHashSet
import java.util.*;
  
class GFG {
    public static void main(String[] args)
    {
        // New Empty LinkedHashSet
        LinkedHashSet set = new LinkedHashSet<>();
  
        // Adding elements
        set.add(10);
        set.add(50);
        set.add(20);
        set.add(40);
        set.add(30);
  
        // Print LinkedHashSet before sort
        System.out.println("Before sort: " + set);
  
        // Convert LinkedHashSet to an ArrayList
        ArrayList array = new ArrayList<>(set);
  
        // sort ArrayList
        Collections.sort(array);
  
        // Print after sort
        System.out.println("After sort: " + array);
    }
}


Java
// Java program to demonstrate how to sort LinkedHashSet
import java.util.*;
  
class GFG {
    public static void main(String[] args)
    {
        // New Empty LinkedHashSet
        LinkedHashSet set = new LinkedHashSet<>();
  
        // Adding elements
        set.add(10);
        set.add(50);
        set.add(20);
        set.add(40);
        set.add(30);
  
        // Print LinkedHashSet before sort
        System.out.println("Before sort: " + set);
  
        // Convert LinkedHashSet to a TreeSet using
        // constructor
        TreeSet tree_set = new TreeSet<>(set);
  
        // Print after sort
        System.out.println("After sort: " + tree_set);
    }
}


Java
// Java program to demonstrate how to sort LinkedHashSet
import java.util.*;
  
class GFG {
    public static void main(String[] args)
    {
        // New Empty LinkedHashSet
        LinkedHashSet set = new LinkedHashSet<>();
  
        // Adding elements
        set.add(10);
        set.add(50);
        set.add(20);
        set.add(40);
        set.add(30);
  
        // Print LinkedHashSet before sort
        System.out.println("Before sort: " + set);
  
        // Print after sort
        System.out.println("After sort: ");
  
        // Sort and print using stream
        set.stream().sorted().forEach(System.out::println);
    }
}


输出
Before sort: [10, 50, 20, 40, 30]
After sort: [10, 20, 30, 40, 50]

方法二:使用TreeSet

在这个方法中,我们使用构造函数将 LinkedHashSet 转换为 TreeSet 自动对元素进行排序。

// Convert LinkedHashSet to a TreeSet
TreeSet tree_set = new TreeSet<>(set);

例子:

Java

// Java program to demonstrate how to sort LinkedHashSet
import java.util.*;
  
class GFG {
    public static void main(String[] args)
    {
        // New Empty LinkedHashSet
        LinkedHashSet set = new LinkedHashSet<>();
  
        // Adding elements
        set.add(10);
        set.add(50);
        set.add(20);
        set.add(40);
        set.add(30);
  
        // Print LinkedHashSet before sort
        System.out.println("Before sort: " + set);
  
        // Convert LinkedHashSet to a TreeSet using
        // constructor
        TreeSet tree_set = new TreeSet<>(set);
  
        // Print after sort
        System.out.println("After sort: " + tree_set);
    }
}
输出
Before sort: [10, 50, 20, 40, 30]
After sort: [10, 20, 30, 40, 50]

方法 3:使用流

在这个方法中,我们使用流的流和 sorted()函数对 LinkedHashSet 进行排序。

// Sort and print using stream
set.stream().sorted().forEach(System.out::println);

下面是实现:

例子:

Java

// Java program to demonstrate how to sort LinkedHashSet
import java.util.*;
  
class GFG {
    public static void main(String[] args)
    {
        // New Empty LinkedHashSet
        LinkedHashSet set = new LinkedHashSet<>();
  
        // Adding elements
        set.add(10);
        set.add(50);
        set.add(20);
        set.add(40);
        set.add(30);
  
        // Print LinkedHashSet before sort
        System.out.println("Before sort: " + set);
  
        // Print after sort
        System.out.println("After sort: ");
  
        // Sort and print using stream
        set.stream().sorted().forEach(System.out::println);
    }
}
输出
Before sort: [10, 50, 20, 40, 30]
After sort: 
10
20
30
40
50