java - 订购哈希集示例?

标签 java data-structures hashset comparable sortedset

我需要一个示例,说明如何在 HashSet 上使用可比较的类来获得升序。假设我有一个像这样的 HashSet:

HashSet<String> hs = new HashSet<String>();

如何让 hs 按升序排列?

最佳答案

使用 TreeSet反而。它有一个 constructor taking a Comparator .它会自动对Set进行排序。

如果要将 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.

如果您拥有的项目本身已经实现 Comparable并且它的默认排序顺序已经是你想要的了,那么你基本上不需要提供Comparator。然后,您可以直接基于 HashSet 构造 TreeSet。例如

Set<String> hashSet = getItSomehow();
Set<String> treeSet = new TreeSet<String>(hashSet);
// Now it's sorted based on the logic as implemented in String#compareTo().

另见:

关于java - 订购哈希集示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3380312/

相关文章:

data-structures - 如何在安全的 Rust 中表达相互递归的数据结构?

java - 通过数据结构(队列、堆栈、包)进行迭代

java - 我可以覆盖哈希集确定重复的方式吗?

java - 如何检查Map<String, Set<String>>中有多少个HashSet

Java - MVC 模式 - 绘制和克服空指针异常

Java 游戏逻辑,检查对象是否放置在可能的位置之一

c - 在 C 中使用结构 - 无法访问值

java - 如何基于 Log4J 中的派生类在基类中配置日志记录?

java - 不断阅读java WatchEvents

java - 返回 Hashset 中具有最高值的类对象