从Hashmap返回信息

时间:2013-11-26 11:33:29

标签: java dictionary 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));
    }

然而,返回null,看着它,它不会给我我需要的东西。

如何根据HashMap的索引从HashMap中分别检索Key / Value? (如果Hashmaps甚至有索引,那就是我的印象)

=============== 我对hashmap的想法。

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

3 个答案:

答案 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中的元素。