订购哈希集示例?
2022-09-02 05:22:48
我需要一个示例来说明如何在 上使用可比较的类来获得升序。假设我有一个像这样的:HashSet
HashSet
HashSet<String> hs = new HashSet<String>();
我怎样才能按升序排列?hs
我需要一个示例来说明如何在 上使用可比较的类来获得升序。假设我有一个像这样的:HashSet
HashSet
HashSet<String> hs = new HashSet<String>();
我怎样才能按升序排列?hs
请改用树集
。它有一个构造函数,它采用比较器
。它将自动对 .Set
如果要将 a 转换为 ,请执行此操作:HashSet
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.
如果您拥有的项目本身已经实现了可比较,
并且其默认排序顺序已经是您想要的,那么您基本上不需要提供.然后,您可以直接基于 .例如: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().
哈希集
“不保证集合的迭代顺序。请改用 LinkedHashSet
。
附录:我会支持@BalusC关于实现Able的观点,
并表达对LinkedHashSet
的轻微偏好,它提供了“可预测的迭代顺序......而不会产生与 TreeSet
相关的增加成本。
附录:@Stephen提出了一个重要的观点,这有利于@BalusC的建议。 仅当数据(几乎)是静态的并且已经过排序时,才是更有效的替代方法。TreeMap
LinkedHashSet