如何对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]

