iro*_*xxx 35 java arraylist hashmap
美好的一天,这让我感到困惑(大脑冻结!),似乎缺少一些东西.有一个我用HashMap填充的ArrayList.现在我把我的HashMap和arraylist放进去.
Map.put(DATE, value1);
Map.put(VALUE, value2);
arraylist.put(Map);
Run Code Online (Sandbox Code Playgroud)
由于我正在解析JSON,因此arraylist的大小会增加.现在我的问题是如何从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++;
}
Run Code Online (Sandbox Code Playgroud)
但我似乎无法获得所有的价值观.Map大小始终返回值2,这只是元素.如何从ArrayList中的Map键获取所有值?谢谢
Roh*_*ain 79
当你已经有工作要做的时候,你为什么要重新发明轮子?Map.keySet()method为您提供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));
}
Run Code Online (Sandbox Code Playgroud)
另外,你的第一个for-loop对我来说很奇怪: -
for(int k = 0; k < list.size(); k++){
map = (HashMap)list.get(k);
}
Run Code Online (Sandbox Code Playgroud)
您正在迭代列表,并将每个元素分配给相同的元素reference - 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());
}
Run Code Online (Sandbox Code Playgroud)
PS: -
你的代码看起来很混乱.我建议,把这些代码放在一边,再考虑一下你的代码design.目前,正如代码所代表的那样,很难理解它试图做什么.
Kum*_*tra 11
试试这种方式......
我正在考虑HashMap与键和值类型String,HashMap<String,String>
HashMap<String,String> hmap = new HashMap<String,String>();
hmap.put("key1","Val1");
hmap.put("key2","Val2");
ArrayList<String> arList = new ArrayList<String>();
for(Map.Entry<String,String> map : hmap.entrySet()){
arList.add(map.getValue());
}
Run Code Online (Sandbox Code Playgroud)
Siv*_*lan 11
列表构造函数接受任何实现Collection接口的数据结构,以用于构建列表
要将所有键从哈希映射中获取到列表,请执行以下操作:
Map<String, Integer> map = new HashMap<String, Integer>();
List<String> keys = new ArrayList(map.keySet());
Run Code Online (Sandbox Code Playgroud)
要将所有值从哈希映射中获取到列表,请执行以下操作:
Map<String, Integer> map = new HashMap<String, Integer>();
List<Integer> values = new ArrayList(map.values());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
217741 次 |
| 最近记录: |