通过索引引用排序地图上的java对象?

时间:2009-11-14 22:11:25

标签: java sorting collections map arraylist

我有一个有序的地图,想要按索引位置引用它的有序对象。这可能吗?如何在保持排序的同时将有序映射转换为数组列表,因此我可以通过索引(顺序)检索对象。这是唯一的方法吗?

理想情况下,我可以拥有这个结构,并且知道该结构中的对象的索引,并且可以通过说:

来重新理解它。
    Object nextObj = structure[4] //this structure is originally a sortedMap
//SortedMap<String, Object> sortedMap = new TreeMap<String, Object>();

我的问题是我首先要有一个可以使用的有序地图。有没有一种已知的方法可以做到这一点?

非常感谢您提出任何方法。

2 个答案:

答案 0 :(得分:7)

您可以通过

从SortedMap中检索键值数组
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();

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

答案 1 :(得分:5)

我会使用以下结构

List<Pair<String,Object>> mylist;

总是在自定义Comparator的帮助下插入/搜索对象,并像C ++一样使用一组像lower_bound / upper_bound / equal_bound这样的方法(例如,对于java实现,请参阅here