在按索引排序的映射上引用java对象?

在按索引排序的映射上引用java对象?,java,sorting,collections,map,arraylist,Java,Sorting,Collections,Map,Arraylist,我有一个已排序的映射,希望通过索引位置引用其已排序的对象。这可能吗?在维护排序的同时,如何将已排序的映射转换为数组列表,以便可以通过其索引(顺序)检索对象。这是唯一的办法吗 理想情况下,我可以有这样的结构,并且知道该结构中某个对象的索引,并可以通过以下方式对其进行重新排序: Object nextObj = structure[4] //this structure is originally a sortedMap //SortedMap<String, Object> s

我有一个已排序的映射,希望通过索引位置引用其已排序的对象。这可能吗?在维护排序的同时,如何将已排序的映射转换为数组列表,以便可以通过其索引(顺序)检索对象。这是唯一的办法吗

理想情况下,我可以有这样的结构,并且知道该结构中某个对象的索引,并可以通过以下方式对其进行重新排序:

    Object nextObj = structure[4] //this structure is originally a sortedMap
//SortedMap<String, Object> sortedMap = new TreeMap<String, Object>();
Object nextObj=structure[4]//此结构最初是一个sortedMap
//SortedMap SortedMap=新树映射();
我的问题是,我首先要处理的是一张分类地图。有没有一种已知的方法可以做到这一点


非常感谢您对此提出建议。

我将使用以下结构

List<Pair<String,Object>> mylist;
列出mylist;

<> >对象将始终在自定义比较器和一组方法的基础上插入/搜索,如下拉/绑定/上界/均等绑定,如C++(例如,参见java实现)

,可以通过执行

从排序图中检索键值数组。
Object[] objects = structure.entrySet().toArray();
Object nextObj = structure[4];
下面的代码显示了如何获取对象的键和值

java.util.Map.Entry<K, V> entry = (java.util.Map.Entry<K, V>) structure[4];
K key = entry.getKey();
V value = entry.getValue();
java.util.Map.Entry=(java.util.Map.Entry)结构[4];
K key=entry.getKey();
V value=entry.getValue();

编辑:获取对象值和键的示例

entrySet()将返回一组Map.Entry对象。如果需要值,请使用values()。是的,对它们的迭代将保持排序顺序。是否知道entrySet()返回的集合将保持它来自的结构的顺序?换句话说,数组是否会像原始sortedMap一样排序?在刷新页面之前回答了这一问题:)我在尝试将从values().toArray()中获取的对象数组转换为它最初来自的排序映射的特定对象类型时遇到运行时错误。编译时很好,但在运行时我得到并抛出异常:java.lang.Object;无法转换为[Lcom.MyType;有什么想法吗?是的,这是因为每个数组索引都包含一个java.util.Map.Entry。因此,您需要使用getKey()和getValue()方法。我们一直都在使用这些方法,而且查找内容的速度惊人地快。此外,您可以自定义它,以便在两个键之间获得一个子列表