如果出现以下情况,我应该使用什么方法将项目保存在列表中:
- 我有一个包含项目列表的对象,可以对这些项目执行操作
- 这些项目在列表中排序
- 我需要能够更改列表中项目的位置,并根据其 id 添加或删除项目。
- 该列表最终将保存到数据库中(并且项目需要在此列表中保持其顺序)
- 在已订购的项目上拥有属性“order”是没有意义的(这些对象可以在多种列表中)。
我有的选择(还有其他选择吗?):
- 使用 List 对象,这样它就会自动保持顺序。但是我必须遍历所有对象(更糟糕的是)才能通过 Id 找到对象。
- 使用带有键/值(对象 ID / 对象)的映射,因此很容易检索对象(并且快速)并保留另一个仅保持对象顺序的映射(对象 ID / 对象顺序)
解决方案 #1)这似乎是最简单的解决方案,但存在性能缺陷。
解决方案#2)这似乎是最快的解决方案,但在重新排序列表时代码更多。
是否有一个我不知道的对象将被订购,具有键/值对并具有像 object.add(index, key, value) 或 object.getByIndex(index) 或 object.getByKey(key) 这样的方法?