Set
是一个显而易见的选择,如果我不想在我的数据列表中出现重复的话。
但是,Set
没有get(int index)
方法:Why doesn't java.util.Set have get(int index)?
一些实现伪 get(int index)
的建议,但没有一个是有效的。
toArray
并通过索引访问新数组。- 获取迭代器,并使用
for
循环按计数访问索引元素。
是否有任何高级数据结构,使我能够
- 避免重复。
get(int index)
的性能为 O(1)。
最佳答案
最简单的方法是拥有一个包含HashSet
和ArrayList
的复合集合。您的 add
操作会尝试将其添加到集合中,并且只有在实际添加了新项目时才将其添加到列表中。 get
操作只会从列表中获取。
您是否需要删除值?如果不是,那会让生活变得更简单——否则,删除一个项目将是一个 O(N) 操作。不一定是问题,但要记住一些事情。
关于java - 具有 get(int index) 和避免重复能力的 O(1) 性能的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24277942/