ссылки на объекты Java на отсортированной карте по индексу? - PullRequest
5 голосов
/ 15 ноября 2009

У меня есть отсортированная карта, и я хочу ссылаться на упорядоченные объекты по их позиции в индексе. Это возможно? Как бы я преобразовал отсортированную карту в список массивов, сохраняя при этом порядок, чтобы я мог получить объект по его индексу (порядку). Это единственный способ сделать это?

В идеале я мог бы иметь эту структуру и знать индекс объекта в пределах этой структуры и мог бы повторно получить ее, сказав:

    Object nextObj = structure[4] //this structure is originally a sortedMap
//SortedMap<String, Object> sortedMap = new TreeMap<String, Object>();

Моя проблема в том, что у меня есть отсортированная карта, с которой можно работать. Есть ли известный способ сделать это?

Большое спасибо за предложение любых подходов к этому.

Ответы [ 2 ]

7 голосов
/ 15 ноября 2009

Вы можете получить массив значений ключа из вашей 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();

Редактировать: образец получения значения объекта и ключа

5 голосов
/ 15 ноября 2009

Я бы использовал следующую структуру

List<Pair<String,Object>> mylist;

Объект всегда вставляется / ищется с помощью специального компаратора и набора методов, таких как lower_bound / upper_bound / equal_bound, как в C ++ (например, см. здесь для реализации Java)

...