从列表中的地图获取价值

时间:2013-08-12 16:06:18

标签: java

假设您有以下内容:

List<Map<String,Object>> test; 

当密钥为“key1”时,如何从test中检索值。

我尝试了以下内容:

int number = ((Integer)test.get(0).get("key1"));

但它不起作用..

3 个答案:

答案 0 :(得分:0)

这应该有所帮助。

    Map<String, Integer> ohm = new HashMap<String, Integer>();
    List<HashMap<String,Integer>> test = new ArrayList<HashMap<String, Integer>>();

    ohm.put("one", 1);
    ohm.put("two", 2);

    test.add((HashMap)ohm);

    int number = test.get(0).get("two");
    System.out.println(number);

如果您的HashMap包含 - String,Object--和NOT --String,Integer - ,则以下内容应该有所帮助。

    Map<String, Object> ohm = new HashMap<String, Object>();
    List<HashMap<String,Object>> test = new ArrayList<HashMap<String, Object>>();

    ohm.put("one", 1);
    ohm.put("two", 2);

    test.add((HashMap)ohm);

    int number = (Integer)test.get(0).get("one");
    System.out.println(number);

答案 1 :(得分:0)

您必须遍历列表并查找包含该密钥的地图:

Object value = null;
for(Map<String,Object> map : test) {
    if(map.containsKey("key1")) {
        value = map.get("key1");
        break;
    }
}

答案 2 :(得分:-2)

我的声誉不够高,无法写评论,所以我会给你一个答案。

实际上,我不确定你在哪种情况下会完全需要这种结构。

您可以使用Map<String, List<Object>> test;代替。然后,您将检索您的值,如下所示:

List<Object> values = test.get("key1");
Integer value = (Integer) values.get(0);