假设您有以下内容:
List<Map<String,Object>> test;
当密钥为“key1”时,如何从test中检索值。
我尝试了以下内容:
int number = ((Integer)test.get(0).get("key1"));
但它不起作用..
答案 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);