随机访问的正确数据结构,没有重复

时间:2014-09-21 15:59:34

标签: java data-structures

我需要在某些数据结构中存储唯一对象,但我还需要像ArrayList或plain数组一样通过索引进行访问。也许有一些优雅的方法来做到这一点,不使用从set到数组的转换,迭代遍历所有elemnts,在添加到ArrayList和其他时检查值。 我将不胜感激任何帮助和建议。

2 个答案:

答案 0 :(得分:1)

您应该查看ListOrderedSet中的Apache Commons Collections

  

装饰另一个Set以确保迭代器保留并使用添加顺序。

     

如果对象第二次添加到集合中,它将保留在迭代中的原始位置。可以通过迭代器或toArray方法从集合中观察订单。

     

ListOrderedSet还有各种有用的直接方法。这些包括List中的许多,例如get(int),remove(int)和indexOf(int)。可以通过asList()获得该集的不可修改的List视图。

答案 1 :(得分:0)

制作包含HashSet<T>ArrayList<T>的班级。对于add / append操作,如果该元素尚未包含在集合中,则将其附加到列表将其添加到HashSet。您将使用大约两倍于普通ArrayList的内存,但您将获得O(1)随机访问并包含操作。