如何对Java HashSet进行排序

时间:2020-01-09 10:35:03  来源:igfitidea点击:

这篇文章展示了如何在Java中对HashSet进行排序。由于HashSet是无序集合,因此我们需要将其转换为另一个集合才能对HashSet进行排序。有两个选项可通过将HashSet转换为另一个集合来对其进行排序。

  • 将HashSet转换为list并使用Collections.sort()方法,我们可以在其中传递List作为参数。
  • 通过使用TreeSet类的构造函数将HashSet转换为TreeSet。由于TreeSet是SortedSet实现,因此将根据元素的自然顺序或者在集合创建时提供的Comparator来对元素进行排序,具体取决于所使用的构造函数。

使用Collections.sort()方法对HashSet进行排序

如果使用这种方式在Java中对HashSet进行排序,则需要将HashSet转换为List并将其传递给Collections.sort()方法,该方法将按照自然顺序对其进行排序。如果要按不同顺序对其进行排序,则可以使用比较器。

请参阅如何在Java中对ArrayList进行排序,以通过传递Comparator来查看List的排序。

使用此选项的缺点是返回列表。

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

public class SortingHashSet {
  public static void main(String[] args) {
    Set<String> capitalSet = new HashSet<String>();
    // adding elements
    capitalSet.add("New Delhi");
    capitalSet.add("Lisbon");
    capitalSet.add("Buenos Aires");
    capitalSet.add("Beijing");
    capitalSet.add("Washington DC");
    System.out.println("Set Elements- " + capitalSet);
    //Convert HashSet to list
    List<String> capitalList = new ArrayList<>(capitalSet);
    // Sort ArrayList
    Collections.sort(capitalList);
    System.out.println("After Sorting " + capitalList);
  }
}

输出:

Set Elements- [Beijing, Washington DC, New Delhi, Lisbon, Buenos Aires]
After Sorting [Beijing, Buenos Aires, Lisbon, New Delhi, Washington DC]

通过转换为TreeSet对HashSet进行排序

如果要使用这种方式在Java中对HashSet进行排序,则只需将HashSet传递给TreeSet的构造函数,它将按照其自然顺序进行排序。通过这种方式对HashSet进行排序,排序后,我们仍将拥有Set(而不是List),这与以前的选项一样。

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

public class SortingHashSet {
  public static void main(String[] args) {
    Set<String> capitalSet = new HashSet<String>();
    // adding elements
    capitalSet.add("New Delhi");
    capitalSet.add("Lisbon");
    capitalSet.add("Buenos Aires");
    capitalSet.add("Beijing");
    capitalSet.add("Washington DC");
    System.out.println("Set Elements- " + capitalSet);

    // To TreeSet
    Set<String> sortedCapitalSet = new TreeSet<String>(capitalSet);
    System.out.println("After Sorting " + sortedCapitalSet);
  }
}

输出:

Set Elements- [Beijing, Washington DC, New Delhi, Lisbon, Buenos Aires]
After Sorting [Beijing, Buenos Aires, Lisbon, New Delhi, Washington DC]