当前位置: 首页 > 知识库问答 >
问题:

从ArrayList Java中的HashMap键中检索所有值

柳高卓
2023-03-14

今天好,这有点让我迷惑(大脑冻结!)好像少了些什么。有一个我用HashMap填充的ArrayList。现在我放入了我的HashMap和ArrayList。

 Map.put(DATE, value1);
 Map.put(VALUE, value2);

 arraylist.put(Map);

由于am解析JSON,arraylist的大小显著增加。现在我的问题是如何从ArrayList中的两个映射键中获得值?我试过这个

  if(!list.isEmpty()){   // list is an ArrayList

            for(int k = 0; k < list.size(); k++){
                map = (HashMap)list.get(k);
            }

        }

        Log.d(TAG, "map size is" + map.size());

        String [] keys = new String[map.size()];
        String [] date_value = new String[map.size()];

        String [] value_values = new String[map.size()];

        int i = 0;
        Set entries = map.entrySet();
        Iterator iterator = entries.iterator();

        while(iterator.hasNext()){

            Map.Entry mapping = (Map.Entry)iterator.next();
            keys[i] = mapping.getKey().toString(); 
            date_value[i] = map.get(keys[i]);

            if(keys[i].equals(DATE)){
                date_value[i] = map.get(keys[i]);

            } else if(keys[i].equals(VALUE)){
                value_values[i] = map.get(keys[i]);
            }

                   i++;
                 }

但我似乎不能得到所有的值。映射大小总是返回值2,这只是元素。如何从ArrayList中的映射键获取所有值?谢谢

共有1个答案

国晟睿
2023-03-14

当你已经有事情做你的工作的时候,你为什么要重新发明轮子。map.keyset()方法提供映射中所有键的集合

Map<String, Integer> map = new HashMap<String, Integer>();

for (String key: map.keySet()) {
    System.out.println("key : " + key);
    System.out.println("value : " + map.get(key));
}

另外,你的第一个for循环在我看来很奇怪:-

   for(int k = 0; k < list.size(); k++){
            map = (HashMap)list.get(k);
   }

您正在迭代列表,并将每个元素分配给相同的reference-map,这将覆盖前面的所有值。你将得到的只是你列表中的最后一张地图。

编辑:-

如果需要映射的键和值,还可以使用entryset。那对你更好:-

    Map<String, Integer> map = new HashMap<String, Integer>();

    for(Entry<String, Integer> entry: map.entrySet()) {
        System.out.println(entry.getKey());
        System.out.println(entry.getValue());
    }

附注:-
你的代码在我看来乱七八糟。我建议,把代码放在一边,再考虑一次设计。就目前而言,就代码而言,很难理解它想要做什么。

 类似资料:
  • 我如何从一个HashMap填充JList而只在列表中显示值呢?

  • 我通过一个接一个地放置值来创建HashMap。当我在每次迭代后打印hashmap时,生成的hashmap包含所有键的相同值。我不明白为什么会这样。我已经粘贴了下面的输出 HashMap(String,List(Object))mRestrictions; 输出:- 逐个限制:-{profile\u name=[Test1]} 逐个限制:-{profile\u name=[url],url=[url

  • 问题内容: 我想存储值并从Java HashMap中检索它们。 这是我到目前为止所拥有的: 我想从HashMap中检索所有键和值作为Java集合或实用程序集(例如)。 我知道只要知道密钥就可以获取值,例如: 有没有办法检索键值作为列表? 问题答案: Java Hashmap键值示例:

  • 我想存储值并从Java HashMap中检索它们。 这是我目前所拥有的: 我想从HashMap中检索所有键和值,作为Java集合或实用程序集(例如,LinkedList)。 我知道如果我知道键,我可以得到值,如下所示: 有没有办法以列表的形式检索键值?

  • 问题内容: 您如何在中搜索密钥?在此程序中,当用户输入密钥时,代码应安排在哈希图中搜索相应的值,然后进行打印。 请告诉我为什么它不起作用。 问题答案: 只需致电:

  • 我是API的新手,正在使用JSON,希望在这里得到一些帮助。 我知道我想要完成的所有事情都可以使用PRAW库来完成,但我试图在没有PRAW的情况下弄清楚。 我有一个for循环,它从一个特定的子编辑中提取文章标题,将所有的文章标题输入到一个pandas数据帧中,在达到限制后,将< code >‘after 参数更改为最后一个文章id,以便在下一批中重复。 一切都很完美,但是当我对特定线程尝试相同的技