具有键值映射和排序的数据结构

Kan*_*pta 3 java collections data-structures

我需要一个提供键-值映射关系的数据结构,例如和Map,但还允许我基于(int)索引(例如myKey = myDS.get(index))来获取键,而不必遍历数据结构以使键位于所需的位置指数。

我考虑过使用LinkedHashMap,但没有找到在给定索引处获取密钥的方法。我想念什么LinkedHashMap吗?还是我可以使用其他数据结构?

编辑
不是重复。另一个问题的正确答案是使用某种方法SortedMap; 但是,这不是对这个问题的正确答案,因为我希望能够Entry通过Integer索引从数据结构中检索到,这在任何Java库中都不支持。

Ste*_* P. 5

LinkedHashMap提供了Map接口的哈希表/双链表实现。从它开始extends HashMap,它仍然由数组支持,但是还有一个双向链接的Entry对象列表,以确保迭代顺序是可预测的。

因此,基本上,这意味着当您像这样遍历地图时:

for (Map.Entry<keyType,valueType>> entry : linkedHashMap.entrySet())
{
   System.out.println("Key: " + entry.getKey().toString() + 
                     " Value: " + entry.getValue.toString());
}
Run Code Online (Sandbox Code Playgroud)

它将以您添加键的顺序打印,而不是非链接的Map,而不是插入顺序打印。您无法像您想要的那样访问数组的元素,因为支持散列的数组不按顺序排列。仅双链表是有序的。

解:

您正在寻找的是来自Apache Commons 的LinkedMap