美好的一天,这让我有点困惑(大脑卡住!),并且似乎遗漏了一些东西。有一个我用 HashMap 填充的 ArrayList。现在我放入我的 HashMap 和 arraylist。
Map.put(DATE, value1);
Map.put(VALUE, value2);
arraylist.put(Map);
由于解析 JSON,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++;
}
但我似乎无法获得所有值。 Map 大小总是返回 2 的值,这只是元素。如何从 ArrayList 中的 Map 键中获取所有值?谢谢
最佳答案
既然已经有工作要做,为什么还要重新发明轮子。 Map.keySet()
方法为您提供 Map 中所有键的 Set。
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
,这将覆盖所有以前的值。您将拥有的只是列表中的最后一张 map 。
编辑:-
如果您想要 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());
}
附言:-
你的代码在我看来很困惑。我建议,把那段代码放在一边,再想想你的design
。目前,就代码而言,很难理解它试图做什么。
关于java - 从 ArrayList Java 中的 HashMap 键中检索所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12960265/