我目前正在搜索Set的Java实现,该实现保留原始的插入顺序并提供索引访问。另外我想有一个批量appendAll()方法,它接受另一个集合并将其追加到最后(重复的excpet,因为这是一个Set)。
LinkedHashSet在一定程度上朝着正确的方向发展,但缺少索引访问和批量追加。
我可以自己写这个,但为什么要重新发明呢?
答案 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。