2012-04-04 57 views

回答

1

就其本质而言,基于散列的数据结构不是有序的。你可以编写一个包装文件来补充一个额外的数据结构(这或多或少是LinkedHashMap所做的)。但是,保持哈希集合和列表是有意义的,为了保持良好的顺序,您需要一棵树或类似的数据结构。但是树本身可以作为一个集合使用,所以你基本上会复制这些信息(比set + list更多的情况,这比两个不同的set实现有所不同)。因此,如果您需要订购,最好的解决方案是使用TreeSet或另一个SortedSet

1

这不是一个HashSet,但由于Set后裔你有TreeSet

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

您可以使用迭代

公共迭代器迭代器()

返回在元素的迭代器遍历元素在这一套。元素按升序返回

0

我想有TreeMap的是...相关,但绝对不一样:)

1

您可以使用一个TreeSet,但它所有的操作都LG(N)

可以使用LinkedHashSet ,它保持哈希集顶部的链表,但它只保持插入顺序(第一次插入将是迭代器中的第一个元素),你不能有自然或自定义排序

你也可以使用TreeSet + HashSet方法,对于每个元素将被保留,同时添加和删除仍然是lg(n)包含将变为预期o(n)

明智选择:)