日期:2014-05-20  浏览次数:20840 次

如何遍历request.getParameterMap()里面的值。
request.getParameterMap()这个返回的是一个map,我用map的键去取值用的是:

Map map = new HashMap();

map = request.getParameterMap();

String a = map.get("account_code").toString();

System.out.println(a);

运行结果:

[Ljava.lang.String;@17a7706

也就是说MAP里的值仍然是对象。

然后我改为:String a = String.valueOf(map.get("account_code"));

但是运行结果依然是这个。

我通过DEBUG看到这个map里面能够找到正确的键值对。但是就是遍历不出来。请问这个问题如何解决?

------解决方案--------------------
map.get("account_code") 得到的是数组

String[] xx = (String[])map.get("account_code");

String a = String.valueOf(xx[0]);
------解决方案--------------------
for(Iterator iter = map.entrySet().iterator();iter.hasNext();){ 
Map.Entry element = (Map.Entry)iter.next(); 
Object strKey = element.getKey();
Object strObj = element.getValue();
}
------解决方案--------------------
for(Iterator iter = map.entrySet().iterator();iter.hasNext();){ 
Map.Entry element = (Map.Entry)iter.next(); 
Object strKey = element.getKey(); 
String[] value=(String[])element.getValue();

System.out.print(strKey.toString() +"=");
for(int i=0;i<value.length;i++){
System.out.print(value[i]+",");
}
System.out.println();
}
------解决方案--------------------
四楼是正解。
引用
for(Iterator iter = map.entrySet().iterator();iter.hasNext();){ 
Map.Entry element = (Map.Entry)iter.next(); 
Object strKey = element.getKey(); 
Object strObj = element.getValue(); 
}

如果你用System.out.println(element.getValue().getClass().getName());可以打印出该值的类型。然后再根据类型遍历一下就行了。
------解决方案--------------------
我晕 map(String,String[]) 不是现成的么? 还用遍历?

只要没有 checkbox,你就可以 用value[0]得到


即使你要遍历,键和值 也是同步的,怎么还需要对应?

HashMap newMap = new HashMap();
for(Iterator iter = map.entrySet().iterator();iter.hasNext();){ 
Map.Entry element = (Map.Entry)iter.next(); 
Object strKey = element.getKey(); 
String[] value=(String[])element.getValue(); 

String valueStr="";
System.out.print(strKey.toString() +"="); 
for(int i=0;i <value.length;i++){ 
System.out.print(value[i]+","); 
valueStr += value[i] +",";

System.out.println(); 

newMap.put(strKey,valueStr);
}