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

Che*_*eng 4 java data-structures

Set 如果我不想在我的数据列表上重复,那么这是一个显而易见的选择.

但是,Set没有get(int index)方法:为什么java.util.Set没有get(int index)?

实现伪的几个建议get(int index)并没有一个是有效的.

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

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

  1. 避免重复.
  2. 有O(1)表现get(int index).

Jon*_*eet 9

最简单的方法是使用包含a HashSet和a的复合集合ArrayList.您的add操作会尝试将其添加到集合中,并且只有在实际添加了新项目时才将其添加到列表中.该get操作将从列表中获取.

你有没有需要删除值?如果不是,这会使生活更简单 - 否则,删除项目将是O(N)操作.不一定是个问题,但要记住一些事情.

  • @CheokYanCheng:这取决于你 - 你没有提到任何关于它是线程安全的要求.请注意,Java*中的大多数集合都不是*线程安全的. (5认同)