设置保持插入顺序并提供索引访问的实现

时间:2013-10-04 14:27:07

标签: java data-structures

我目前正在搜索Set的Java实现,该实现保留原始的插入顺序并提供索引访问。另外我想有一个批量appendAll()方法,它接受另一个集合并将其追加到最后(重复的excpet,因为这是一个Set)。

LinkedHashSet在一定程度上朝着正确的方向发展,但缺少索引访问和批量追加。

我可以自己写这个,但为什么要重新发明呢?

1 个答案:

答案 0 :(得分:2)

Apache Commons中的ListOrderedSet怎么样?

  

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

     

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

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

它实现了java.util.Set,但由于.get(index)不是由Set定义的方法,因此您需要确保将其作为ListOrderedSet传递,而不是Set。