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