如何对 Java 中的 HashSet 元素进行排序

原文:https://www.studytonight.com/java-examples/how-to-sort-hashset-elements-in-java

在这篇文章中,我们将对 Java 中的 HashSet 元素进行排序。HashSet 是 Java 中 Set 接口的一个实现类,用于存储数据,但不维护任何顺序。

要排序HashSet,有几种方法,如将HashSet转换为TreeSet集合类的sort()方法,或使用流的sorted()方法。

由于 HashSet 不保证插入顺序,也不按照排序顺序存储元素,所以 Java 提供了 TreeSet 来存储排序后的数据。

举例时间:

让我们创建一个例子来排序 HashSet 元素。在这里,我们将 HashSet 元素转换为以排序顺序存储元素的 TreeSet。

import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class Main {
    public static void main(String[] args){
        Set<Integer> set = new HashSet<>();
        set.add(14);
        set.add(20);
        set.add(50);
        set.add(10);
        System.out.println(set);
        // Sorting
        set = new TreeSet<>(set);
        System.out.println(set);        
    }
}

【50,20,10,14】 【10,14,20,50】

例 1

让我们创建另一个对 HashSet 元素进行排序的示例。这里,我们使用 Collections 类的 sort()方法,该方法返回一个已排序元素的列表。当您想要获得排序的元素时,无论是集合还是列表,这个例子都很有用。

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Main {
    public static void main(String[] args){
        Set<Integer> set = new HashSet<>();
        set.add(14);
        set.add(20);
        set.add(50);
        set.add(10);
        System.out.println(set);
        // Sorting
        List<Integer> list = new ArrayList<>(set);
        Collections.sort(list);
        System.out.println(list);        
    }
}

【50,20,10,14】 【10,14,20,50】

例 2

如果您使用的是 Java 8 或更高版本的 Java,那么您可以使用 流 API 及其 sorted()方法对流元素进行排序,toList()方法返回这些元素的列表。请看下面的例子。

import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args){
        Set<Integer> set = new HashSet<>();
        set.add(14);
        set.add(20);
        set.add(50);
        set.add(10);
        System.out.println(set);
        // Sorting
        List<Integer> list = set.stream()
          .sorted()
          .collect(Collectors.toList()); 
        System.out.println(list);
    }
}

【50,20,10,14】 【10,14,20,50】