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

Java 设置保持插入顺序并提供索引访问的实现,java,data-structures,Java,Data Structures,我目前正在搜索一个集合的Java实现,该集合保持原始插入顺序并提供索引访问。此外,我希望有一个bulk appendAll()方法,它接受另一个集合并将其追加到末尾(excpet用于重复项,因为这是一个集合) 方向有点正确,但缺少索引访问和批量追加 我可以自己写,但为什么要重新发明whell?在Apache Commons中如何 修饰另一个集合,以确保迭代器保留并使用加法的顺序。 如果第二次将对象添加到集合中,它将在迭代中保持在原始位置。可以通过迭代器或toArray方法从集合中观察顺序 Lis

我目前正在搜索一个集合的Java实现,该集合保持原始插入顺序并提供索引访问。此外,我希望有一个bulk appendAll()方法,它接受另一个集合并将其追加到末尾(excpet用于重复项,因为这是一个集合)

方向有点正确,但缺少索引访问和批量追加

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

在Apache Commons中如何

修饰另一个集合,以确保迭代器保留并使用加法的顺序。

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

ListOrderedSet还有各种有用的直接方法。其中包括列表中的许多项,例如get(int)、remove(int)和indexOf(int)。可以通过asList()获取集合的不可修改列表视图


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

有什么问题吗?鉴于
集合
的接口中没有
get(index)
方法,我不知道如何实现这一点。当接口未公开此操作时,您计划如何通过索引检索元素?@DeepakBala他可以创建一个类
MySet
,该类具有此操作并使用此操作。您可以在
集合
中定义的方法之外添加方法。似乎您实际上需要一个不接受重复的ArrayList。将ArrayList子类化不是更容易吗?@arshajii如果这是真的,您永远不能将此集合返回给调用者并期望他们使用此索引功能。调用方将始终需要知道底层impl。我同意可以添加该特性,但是如果impl必须是
,那么它将以多态性为代价。