Jon*_*ony 20 java hashset comparable sortedset data-structures
我需要一个关于如何在a上使用类似的类HashSet来获得升序的示例.假设我有HashSet这样一个:
HashSet<String> hs = new HashSet<String>();
Run Code Online (Sandbox Code Playgroud)
我怎样才能hs按升序排列?
Bal*_*usC 45
请TreeSet改用.它有一个构造函数Comparator.它会自动排序Set.
如果要将a转换HashSet为a TreeSet,请执行以下操作:
Set<YourObject> hashSet = getItSomehow();
Set<YourObject> treeSet = new TreeSet<YourObject>(new YourComparator());
treeSet.addAll(hashSet);
// Now it's sorted based on the logic as implemented in YourComparator.
Run Code Online (Sandbox Code Playgroud)
如果您自己已经实施的项目Comparable及其默认订购顺序已经是您想要的,那么您基本上不需要提供Comparator.然后你可以TreeSet直接构造它HashSet.例如
Set<String> hashSet = getItSomehow();
Set<String> treeSet = new TreeSet<String>(hashSet);
// Now it's sorted based on the logic as implemented in String#compareTo().
Run Code Online (Sandbox Code Playgroud)
HashSet"不保证集合的迭代顺序." 请LinkedHashSet改用.
附录:我将第二个@BalusC关于实施Comparable和表达略微偏好的观点LinkedHashSet,它提供了"可预测的迭代顺序......而不会产生与之相关的增加的成本TreeSet."
附录:@Stephen提出了一个重要的观点,这有利于@BalusC的建议TreeMap.LinkedHashSet只有当数据(几乎)是静态的并且已经排序时,它才是更有效的替代方案.