基本上我要做的就是将两个值存储到一个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));
}
然而,返回null,看着它,它不会给我我需要的东西。
如何根据HashMap的索引从HashMap中分别检索Key / Value? (如果Hashmaps甚至有索引,那就是我的印象)
=============== 我对hashmap的想法。
<Integer>, <Integer> Index: 0
<Integer>, <Integer> Index: 1
etc...
答案 0 :(得分:0)
HashMaps未排序,没有索引,并且在迭代期间返回的顺序功能不能保证是插入的顺序。
还有其他可用的Map对象,它们提供了一些这些功能。例如,TreeMap被排序。
所有Maps都提供了一个方法keySet(),它提供迭代器中的一组键和类似的值()迭代迭代这些对象可能提供你想要的那种行为。
答案 1 :(得分:0)
aks的第一件事,是一个hashmap真的需要你需要的数据结构吗?
如果不是,那么只需使用简单的List并使用其get(index)
方法!
如果是,那么您可以使用Map建议 - 例如LinkedHashMap - 保留插入/放置顺序。然后你可以调用那个映射的values()并使用增强的for循环迭代它,或者也可以创建一个List,并在需要索引访问时将其重新传递给它。
答案 2 :(得分:0)
如果您希望根据索引获取对象 - 您真正需要的是 ArrayList
- 它允许按索引访问,并且基本上是{{ 3}}
如果要将对象“附加”到同一索引,则可以使用2个ArrayLists(每种类型的对象一个) - 或者使用dynamic array(来自apache commons)作为arraylist中的元素。