【发布时间】:2013-10-04 14:27:07
【问题描述】:
我目前正在搜索 Set 的 Java 实现,它保持原始插入顺序并提供按索引访问。此外,我想要一个批量 appendAll() 方法,该方法采用另一个集合并将其附加到末尾(重复项除外,因为这是一个集合)。
LinkedHashSet 有点朝着正确的方向发展,但它缺少索引访问和批量追加。
我可以自己写这个,但为什么要重新发明呢?
【问题讨论】:
-
addAll()有什么问题? -
鉴于
Set在其接口中没有get(index)方法,我看不出这是如何实现的。当接口不暴露这个操作时,你打算如何通过索引来检索元素? -
@DeepakBala 他可以创建一个类
MySet,它确实有这个操作并使用它。您可以添加超出Set中定义的方法。 -
看来您实际上需要一个不接受重复项的 ArrayList。继承 ArrayList 会不会更容易?
-
@arshajii 虽然这是真的,但您永远不能将此 Set 返回给调用者并期望他们使用此索引功能。调用者总是需要知道底层的 impl。我同意可以添加该功能,但如果 impl 必须是
Set,它将以牺牲多态性为代价。
标签: java data-structures