我需要按照添加顺序将对象存储在集合中,这就是我需要List
的原因。但是,列表不应包含重复项。我还需要快速确定集合中是否已存在对象。不是每次都迭代列表,最好是像HashSet
这样的东西。我可以快速找到并添加元素并保留插入顺序。
问题是 - 我应该:
通过添加HashSet字段扩展ArrayList?
实现一个Java集合接口(List或Set)?
只需创建一个包含两个字段的新类 - ArrayList和 HashSet的
第一个选项有缺点 - 我不需要所有的ArrayList方法,因此我必须覆盖所有这些方法,以便我班级的用户不会调用基类方法这会简单地搞砸(例如,可以从列表中删除一个对象但该对象仍然存在于该集合中)。并且没有办法删除基类方法(除了覆盖它并抛出异常)。
同样对于2,我真的必须实现接口的所有方法。
第三个选项看起来对我来说是最好的,但它使代码实现依赖,因为我的类没有实现任何接口。
在这种情况下我该怎么办? 我希望add
接口拥有所有List
方法。 - LinkedHashSet不是一个选项。
答案 0 :(得分:2)
您可以使用LinkedHashSet,这是一个Set实现,可确保迭代顺序与您添加元素的顺序相同。
Set接口的哈希表和链表实现,具有可预测的迭代顺序。 ...此链接列表定义迭代排序,即元素插入集合(插入顺序)的顺序。
答案 1 :(得分:1)
无需自行实施任何内容。使用维持遭遇顺序的LinkedHashSet。