我已经阅读了很多关于实现Map
和List
接口的数据结构的主题。在任何地方 LinkedHashMap 或 SortedMap 就足够了。
但我的情况略有不同,因为我不仅需要保持键的插入顺序或排序映射,还需要执行键顺序的随机更改。
List
允许使用方法做到这一点add(int index, E element)
,但没有实现Map
不支持这样的方法。应该提到的是,我需要的数据结构将主要用作地图。例如地图如下所示:
- 键 1 -> 值 1
- 键 2 -> 值 2
- 键 3 -> 值 3
- 键 4 -> 值 4
我可能需要将第 i 个对移动到第 j 个位置,具体取决于用户操作:
- 键 1 -> 值 1
- 键 4 -> 值 4 [j]
- 键 3 -> 值 3
- 键 2 -> 值 2 [i]
我有一个想法来结合 LinkedList 和 HashMap 并在它们之间同步插入和删除。所以 Map 可以按任意顺序存储元素,同时 List 中的元素可以按我想要的顺序排列。
但我认为这不好。这种结构需要近一倍的内存,并且在 Collection Framework 中的集成很差,因为名称冲突会阻止单个类同时实现 List 和 Map。
所以我的问题是:用 Java 描述的特性实现数据结构的最佳方法是什么?