2013-11-26 3 views
0

В основном, что я пытаюсь сделать, это сохранить два значения в hashmap, я пробовал словарь и не смог с этим как-хорошо, так или иначе, здесь мы идем.Возвращая информацию из Hashmap

private HashMap<Integer, Integer> dropTable = new HashMap<Integer, Integer>(); 

Тогда, в моем коде у меня есть этот

for(int npc = 0; npc < 10; npc++){ 
     dropTable.put(npc, Constants.itemDrops[npc][1]); 
    } 

В общем, что я пытаюсь сделать, это сохранить значения таким образом (С ItemID того, что возвращается в массиве itemDrops

<ArrayIndex, ItemID> 

Как, когда-либо, когда я пытаюсь вернуть эту информацию, я не могу понять это.

Вот ч ой я пытался возвращать значение

 for(int i = 0; i < dropTable.size(); i++) { 
     System.out.println("NPC: " + dropTable.get((Integer)i)); 
    } 

Однако, что возвращает нуль, и, глядя на него, он не будет давать мне то, что мне нужно.

Как я могу получить ключ/значение отдельно от HashMap на основе индекса HashMap? (Если HashMaps даже индекса, это то, что я нахожусь под впечатлением)

=============== Моя идея HashMap.

<Integer>, <Integer> Index: 0 
<Integer>, <Integer> Index: 1 
etc... 
+0

нет способа сделать это с hashmap –

+0

Не могли бы вы предоставить метод, в котором это возможно? –

ответ

0

HashMaps является несортированным, не имеют индексы и особенности порядка возвращаются во время итерации не гарантируются порядок вставки.

Доступны другие объекты Карты, которые предоставляют некоторые из этих функций. Например, TreeMap сортируется.

Все карты предоставляют метод keySet(), который предоставляет набор ключей в итераторе и аналогичные значения(). Итерирование коллекции по этим объектам, скорее всего, обеспечит вид поведения, который вы желаете.

0

Первое, что нужно сделать aks, является ли хэш-карта реальной структурой данных, в которой вы нуждаетесь?

Если нет, просто используйте простой List и используйте его метод get(index)!

Если да, то вы можете использовать имплантацию Map, такую ​​как LinkedHashMap, - которая сохраняет порядок вставки/наложения. Затем вы можете вызывать values() этой карты и перебирать ее с помощью расширенного цикла for, или, возможно, также создать список и передать его, когда будет возвращена коллекция, если вам нужен доступ к индексу.

0

Если вы хотите, чтобы получить ваши объекты в соответствии с индексом - то, что вы действительно ищете является ArrayList - который позволяет получить доступ по индексу, и в основном dynamic array.

Если вы хотите, чтобы объекты «прикреплялись» к одному и тому же индексу, вы можете использовать 2 ArrayLists (по одному для каждого типа объектов) - или использовать Pair (из apache commons) в качестве элемента в arraylist.

+0

Исходный метод, который я использовал, включал пару списков массивов, я просто хотел попытаться упростить его, не используя то, что казалось сотнями переменных –

Смежные вопросы