项目框架是sprinMvc和mybatis
data是List>
controller层写了一个循环 for(Map map : data){}
data 在控制台打印出来是这种数据格式
项目运行这了会报类型转换错误
求解决方法 ,急!在线等
这是报错信息
假设list是List<Map<String,String>>
for (Map<String,String> m : list)
{
for (String key : m.keySet()) {
System.out.println("Key = " + key);
}
//遍历map中的值
for String value : m.values()) {
System.out.println("Value = " + value);
}
}
data是ExcleExportBean的集合吗
是不是Object转map报错了?
List> list =new ArrayList>();
Map<String,Object> items1 =new HashMap<String,Object>();
items1.put("A", 10);
items1.put("B", 20);
items1.put("C", 30);
Map<String,Object> items2 =new HashMap<String,Object>();
items2.put("A", 10);
items2.put("B", 20);
items2.put("C", 30);
Map<String,Object> items3 =new HashMap<String,Object>();
items3.put("A", 10);
items3.put("B", 20);
items3.put("C", 30);
list.add(items1);
list.add(items2);
list.add(items3);
for (Map s: list) {
for (Object a: s.keySet()) {
System.out.println(s.get(a));
}
}
小兄弟,ExcleExportBean不能这样直接转换成Map的。如果你要把bean转换成bean的话,可以看一下org.apache.commons.beanutils.BeanUtils这里类里面的方法。
报错很明显:ExcelExportBean不能被强转为Map;你看下你的list里装的是什么实体,然后在遍历时用对应实体来接收就行了。
使用这个方法就解决了
Map map = new HashMap();
map.put("AR01", "hello");
map.put("AR02", 2017);
map.put("AR03", "world");
map.put("AR04", 1000);
List<Map<String, Object>> testList = new ArrayList<Map<String, Object>>();
testList.add(map);
for (Map<String, Object> m : testList) {
for (String k : m.keySet()) {
System.out.println(k + " : " + m.get(k));
}
}
这样应该可以:
for(Map<String, String> m : data){
for(Map.Entry<String, String> entry : m.entrySet()){
System.out.print(entry.getKey() + " --> " + entry.getValue() );
}
}
List> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
Map map = new HashMap<>();
map.put((i+1)+"",i+"");
list.add(map);
}
for (int i = 0; i < list.size(); i++) {
Map map = list.get(i);
Iterator> it = map.entrySet().iterator();
if (it.hasNext()){
Map.Entry next = it.next();
System.out.print("参数----key--"+next.getKey()+"--/value/--"+next.getValue());
}
}
这样遍历 for(ExcleExportBean exbean : data){} 就可以了,你的list里存的是ExcleExportBean而不是Map类型的
你对象转string不是就有问题吗?打印的是地址值 最好贴一下代码
mybatis返回的list实际上是List,由于java的泛型,进行了类型擦出,虽然你用List接受,但是并不会检验其类型,只有实际取出来时才会进行类型转换,从而保存,所以你改一下遍历的对象类型就可以了
for (Map s: list) {
for (Object a: s.keySet()) {
System.out.println(s.get(a));
}
}
看你的报错信息,好像不是循环遍历的问题,是返回值类型写错了,应该是List吧,不是List>的类型。你在核实一写,方法的返回值是不是对的。此外List>的遍历如下代码:
List<Map<String, String>> mapList = new ArrayList<Map<String, String>>();
mapList.add(map);
for (Map<String, String> m : mapList) {
for (String k : m.keySet()) {
System.out.println(k + " : " + m.get(k));
}
}