0

这样的事情是否存在于任何地方?基本上我看到 java 有 LinkedHashSet 但没有类型的可导航哈希集?

4

4 回答 4

1

这不是一个HashSet,但作为Set你的后裔有TreeSet

此类实现由 TreeMap 实例支持的 Set 接口。此类保证已排序的集合将按元素升序排列

您可以使用迭代器遍历元素

公共迭代器 iterator()

返回此集合中元素的迭代器。元素按升序返回

于 2012-04-04T19:16:37.060 回答
1

就其本质而言,基于散列的数据结构是无序的。您可以编写包装器,用附加的数据结构对其进行补充(这或多或少是LinkedHashMap这样做的)。但是,虽然保留散列集和列表是有意义的,但为了保持良好的排序,您需要一个树或类似的数据结构。但是树本身可以作为一个集合工作,因此您基本上会复制信息(比集合加列表的情况更多,这与两个不同的集合实现不同)。因此,如果您需要订购,最好的解决方案是只使用TreeSet或其他。SortedSet

于 2012-04-04T19:20:42.483 回答
1

您可以使用 TreeSet 但其中的所有操作都是 lg(n)

您可以使用 LinkedHashSet,它在哈希集之上保留一个链表,但它只维护插入顺序(第一个插入将是迭代器中的第一个元素),您不能有自然或自定义排序

您也可以使用 TreeSet+HashSet 方法,但每个元素的两个引用将被保留,而 add 和 remove 仍然是 lg(n) 包含将成为预期的 o(n)

做出明智的选择 :)

于 2013-07-20T19:35:23.367 回答
0

我猜有 TreeMap 是...相关但绝对不一样 :)

于 2012-04-04T22:48:52.857 回答