如何在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