【发布时间】:2015-05-26 18:20:10
【问题描述】:
我会提前说明这不是家庭作业问题,而是我正在从事的业余项目的一部分。我有一个可行的解决方案,但我觉得我的解决方案很混乱,而且空间效率低。
我有一个物品清单。
- 列表的长度是可变的。项目按索引删除。项目被添加到列表的末尾。项目可以重复。
- 当查找一个项目时,它只是检查它是否已经在列表中。每个项目都有一个项目唯一的“密钥”。
- 项目根据用户分配的优先级进行排序。
现在我正在使用两种数据结构来实现我的目标。
我有一个基于优先级排序的 ArrayList(用于保持顺序),以及一个基于项目键排序的 ArrayList(用于快速查找)。
是否有一个单一的数据结构可以解决这个问题?如果这很重要,我正在用 Java 编码。排序集几乎是我想要的,但是因为有重复,我认为这行不通
【问题讨论】:
-
你能发布一些示例代码吗?
-
老实说,我几乎认为地图会更好。
-
如果您使用的是唯一键,则可以使用 hashmap 或其变体。
-
A Map 是一个更好的解决方案,但你的两个 ArrayLists 并不是低效的。您有两组指向相同对象的指针。你必须保持你的两个 ArrayLists 同步。
标签: java algorithm sorting lookup