-2

假设您有以下内容:

List<Map<String,Object>> test; 

当键是“key1”时,如何从测试中检索值。

我尝试了以下方法:

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

但它不起作用..

4

3 回答 3

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-- 而不是 --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);
于 2013-08-12T16:25:19.260 回答
0

您必须遍历您的列表并查找包含我猜的键的地图:

Object value = null;
for(Map<String,Object> map : test) {
    if(map.containsKey("key1")) {
        value = map.get("key1");
        break;
    }
}
于 2013-08-12T16:28:20.927 回答
-2

我的声誉不够高,无法写评论,所以我会向您发送答案。

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

你可以Map<String, List<Object>> test;改用。然后,您将像这样检索您的值:

List<Object> values = test.get("key1");
Integer value = (Integer) values.get(0);
于 2013-08-12T16:16:40.983 回答