gpt4 book ai didi

java - 由 HashSet 备份的列表

转载 作者:行者123 更新时间:2023-12-01 21:42:11 25 4
gpt4 key购买 nike

我需要按照对象添加的顺序将对象存储在集合中,这就是我需要 List 的原因。但是,该列表不应包含重复项。我还需要快速确定集合中是否已存在对象。与其每次都迭代列表,不如使用类似 HashSet 的东西。我可以快速查找和添加元素并保留插入顺序。

问题是 - 我应该:

  1. 通过添加 HashSet 字段来扩展 ArrayList?

  2. 实现 Java 集合接口(interface)之一(List 或 Set)?

  3. 只需创建一个包含两个字段的新类 - ArrayList 和哈希集?

第一个选项有一个缺点 - 我不需要所有的 ArrayList 方法,所以我必须重写所有这些方法,这样我的类的用户就不会调用基类方法,这只会把事情搞砸(例如,可以从列表中删除一个对象,但该对象仍然存在于集合中)。并且无法删除基类方法(除了覆盖它并引发异常)。

类似地,对于 2,我确实必须实现该接口(interface)的所有方法。

第三个选项对我来说看起来最好,但它使代码实现依赖,因为我的类没有实现任何接口(interface)。

这种情况我该怎么办? 我想要拥有 List 接口(interface)具有的所有 add 方法。 - LinkedHashSet 不是一个选项

最佳答案

您可以使用LinkedHashSet ,这是一个 Set 实现,可确保迭代顺序与您添加元素的顺序相同。

Hash table and linked list implementation of the Set interface, with predictable iteration order. ... This linked list defines the iteration ordering, which is the order in which elements were inserted into the set (insertion-order).

关于java - 由 HashSet 备份的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36340831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com