java - 具有 get(int index) 和避免重复能力的 O(1) 性能的数据结构

标签 java data-structures

Set 是一个显而易见的选择,如果我不想在我的数据列表中出现重复的话。

但是,Set 没有get(int index) 方法:Why doesn't java.util.Set have get(int index)?

一些实现伪 get(int index) 的建议,但没有一个是有效的。

  1. toArray 并通过索引访问新数组。
  2. 获取迭代器,并使用 for 循环按计数访问索引元素。

是否有任何高级数据结构,使我能够

  1. 避免重复。
  2. get(int index) 的性能为 O(1)。

最佳答案

最简单的方法是拥有一个包含HashSetArrayList 的复合集合。您的 add 操作会尝试将其添加到集合中,并且只有在实际添加了新项目时才将其添加到列表中。 get 操作只会从列表中获取。

您是否需要删除值?如果不是,那会让生活变得更简单——否则,删除一个项目将是一个 O(N) 操作。不一定是问题,但要记住一些事情。

关于java - 具有 get(int index) 和避免重复能力的 O(1) 性能的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24277942/

相关文章:

c++ - 如何有效地存储等价物(来自连接组件标记算法)?

java - CachedThreadPool 与 FixedThreadPool

algorithm - 为什么 B 树的根可以有最小度数 2?

使用 qsort 对 C 数组进行排序?

data-structures - 在 OCaml 中使用数据结构的正确方法

java - 如何在 Java 环境中解码 H.264 视频帧

java - java中构造函数中的代码即使页面刷新也仅被调用一次

java - 有没有一种简单的方法可以在启动时在露天创建用户/组?

java - Spring Boot 正在覆盖数据

algorithm - 范围最小查询、动态数组、区间树、treap