java - 拥有庞大的数字列表和具有唯一订单号的订单,如何使两者都可访问 O(1)?

标签 java data-structures

想象一下我有一个巨大的值列表

123
567
2355
479977
....

这些是按升序排列的

所以

123 - 1
567 - 2
2355 - 3
479977 - 4
...

我想要一个单个对象,让我可以访问该值的订单号(1或2或3 ...)以及实际值(123或567)或...) 的订单号。这样的结构存在吗?

编辑:插入和删除应该是可能的。 如果我有 2 个 Hashmap,我需要两倍的内存,并且必须执行两次操作。

最佳答案

您可以维护 ArrayList<Integer>它具有 O(1) 索引查找来存储所有整数和 (index -> int) 关系以及 HashMap<Integer, Integer>它还具有 O(1) 查找来存储 (int -> index) 关系。

这样做,每个查找方向的时间复杂度为 O(1)。

关于java - 拥有庞大的数字列表和具有唯一订单号的订单,如何使两者都可访问 O(1)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27867800/

相关文章:

c++ - 调试断言失败

c - 这是一个使用堆栈检查 C 中括号平衡的程序,但它没有按预期工作

java - 如何切换两个java jpanels的内容

java - 从检索到的日期中提取日期-月-年

algorithm - 带约束的二分匹配

data-structures - 是否有一种插入时间为 O(1) 且还能保持排序顺序的数据结构?

c++ - 在无法存储值的情况下计算系列?

java - 动态编译和执行代码的直接标准输出

java - 从基于 Java 的对象更新 JavaFX 窗口

Java - 从文件夹中获取不带扩展名的文件名