2013-11-26 35 views
0

基本上我试图做的是将两个值存储到哈希映射中,我试过一个字典,并且无论如何,无论如何,在这里我们去。从哈希映射返回信息

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

然后,在我的代码我有这个

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

基本上,我想要做的是(保存的值以这种方式随着项目ID是什么itemDrops数组中返回

<ArrayIndex, ItemID> 

怎么样,曾经当我试图返回此信息,我无法弄清楚。

这里是h ow我试图返回这个值

 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

你能提供一种方法,这是可能的吗? –

回答

0

HashMaps是未排序的,没有索引,迭代过程中返回的顺序特征不能保证是插入顺序。

还有其他提供这些功能的地图对象。例如,TreeMap是排序的。

所有映射提供了一个方法keySet(),它在迭代器中提供了一组键,而类似的values()迭代这些对象的集合可能会提供您希望的那种行为。

0

第一件事,哈希映射是否是你需要的数据结构?

如果不是,那么只需使用简单的List并使用其get(index)方法!

如果是,那么您可以使用Map暗示 - 例如LinkedHashMap - 保留插入/放置顺序。然后你可以调用该地图的values()并使用增强的for循环遍历它,或者如果需要索引访问,可能还会创建一个List并将其传回集合。

0

如果您正在寻找根据索引得到你的对象 - 你真正需要的是一个ArrayList - 它允许通过索引访问,并且基本上是dynamic array

如果您希望对象“附加”到相同的索引,您可以使用2个ArrayLists(每个对象类型一个) - 或者使用Pair(来自apache commons)作为arraylist中的一个元素。

+0

我使用的原始方法涉及到一对数组列表,我只是试图简化它,而不使用几百个变量 –