Java 无法从另一个hashmap中嵌入的hashmap检索值

Java 无法从另一个hashmap中嵌入的hashmap检索值,java,android,arraylist,collections,Java,Android,Arraylist,Collections,我在arraylist中有以下格式的数据: ArrayList<HashMap<String, HashMap<String, String>>> data; 现在,我尝试从适配器内的arraylist中检索值,如下所示: HashMap<String, HashMap<String, String>> resultp = new HashMap<String, HashMap<String, String>>

我在arraylist中有以下格式的数据:

ArrayList<HashMap<String, HashMap<String, String>>>  data;
现在,我尝试从适配器内的arraylist中检索值,如下所示:

HashMap<String, HashMap<String, String>> resultp = new HashMap<String, HashMap<String, String>>();
resultp = data.get(position);

现在我想在resultp中获取hashmap的值,但我做不到。我尝试了几种方法,使用entryset以及创建新的hashmap等,但最终一无所获。请帮助。

此for each循环获取resultp中的每个hashmap条目

for (String key : resultp.keySet()) { /* This line will get you every key (0, 1,2 3...)*/
   HashMap<String, String> entry = resultp.get(key); /*This line will get you every entry for each key*/

   for (String secondKey : entry.keySet()) { /*This line will get you every key for your entry 0, 1, 2 etc */
        String content = entry.get(secondKey);/* Do what you want with the result */
   }
}

初始数据结构是数组列表,因此可以通过索引检索成员。data.getindex

由于列表中包含一个映射,因此上述操作的结果就是一个映射

现在将RESULTP视为一个具有字符串类型和值作为对象的映射,在这种情况下是另一个映射。使用resultp.getkey将返回HashMap类型的对象


现在,这是最内层的地图,通常的地图操作将适用。

这样的东西对您不起作用吗?-resultp.get0.getpersonidString personid=resultp.getInteger.toStringposition.getpersonid;它正在工作。你能解释一下它是如何工作的吗?请将此作为一个答案发布,以便我可以接受。非常感谢。这是一个简短的解释,所以我只想评论一下:resultp是HashMaps的HashMap,所以resultp.get返回一个HashMap。HashMap有字符串值,因此调用get on返回字符串。resultp.get.get只是将这些调用链接在一起。您能告诉我如何仅检索密钥吗?即,0,1,2在什么上下文中?我的意思是,从什么对象检索它,准确地说?我可以避免循环吗?我使用的是适配器。在你的初始帖子中显示你希望如何在适配器中准确地使用此项。但是如果你的HashMap格式不总是完全相同,除了使用循环外,没有其他选项。只有在外部映射中不存在用于检索值的键时,innerMap才会为null。如果您使用外部映射的键集中的键,除非它为空,否则内部映射不能为空。是的,您是对的…这一个正在工作…但我正在适配器中使用它。因此,当我从数组中删除元素时,在删除元素后,适配器将从0再次初始化…因此引发NPEIs是您的适配器删除对象还是执行此操作你可以控制它。如果您拥有控制权,请从列表中处理地图,然后将其从列表中删除。在任何情况下,从列表中删除元素都不应该对已经检索到的元素抛出NPE。你能详细介绍一下NPE吗?
ArrayList<HashMap<String, HashMap<String, String>>>  data;
11-25 11:55:20.128: I/System.out(16451): resultp--->{0={personid=64, personname=Biki Poddar, personage=19, personimage=1448347571_u.png, dogimage=1448347571_dog.png, dogname=sog, dogage=12}}
for (String key : resultp.keySet()) { /* This line will get you every key (0, 1,2 3...)*/
   HashMap<String, String> entry = resultp.get(key); /*This line will get you every entry for each key*/

   for (String secondKey : entry.keySet()) { /*This line will get you every key for your entry 0, 1, 2 etc */
        String content = entry.get(secondKey);/* Do what you want with the result */
   }
}
 HashMap<String, String> innerMap = resultp.get(key);