问题描述
- 遍历数据是map类型的list集合出问题了
-
我从数据库获得了list,转换成json格式是这个。
控制台上打出是这个形式:
[{"name":"羊毛衫","num":20},{"name":"羽绒服","num":32},{"name":"短袖","num":11},{"name":"毛衣","num":25},{"name":"长袖","num":42}]
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
控制台打印出的是这个:
Echars [num=20, name=羊毛衫]
Echars [num=32, name=羽绒服]
Echars [num=11, name=短袖]
Echars [num=25, name=毛衣]
Echars [num=42, name=长袖]
怎么前面多了个Echars,这个是我实体类的名字
解决方案
首先,你使用的system.out.pirntln(list.get(i));打印某个对象,本质jkd是调用对象的toString方法的。
其次,打印结果说明你的实体的toString 方法就是Echars [num=20, name=羊毛衫]这个输出格式的。
最后,你想打印什么格式的数据呢?可以根据需要拼接字符串的形式,而不是直接打印对象。如果你像去掉Echars的话,可以自己拼接打印字符串,重写Echars类的toString方法,参考:
public class Echars{
//属性
public String toString(){
retrun "[num="+count+", name="+name+"]";
}
}
解决方案二:
System.out.println(list.get(i));
->
System.out.println(list.get(i).num + "," + list.get(i).name);
这是正常的,你没有重写toString。
解决方案三:
Map 集合数据遍历
javaweb --- jsp页面遍历list类型的数据
集合遍历(List、Set、Map)
解决方案四:
list.get(i),,你的list里面放的是Echars这个对象,,直接打印这个对象的话,,肯定是这样,,list.get(i).getNum()就可以取出实体类中的数据了
解决方案五:
正解,你需要重写实体类的toString()方法,
像这样(我的一个生成的toString()方法):
public String toString() {
return "Category [categoryId=" + categoryId + ", categoryCode="
+ categoryCode + ", categoryName="
+ categoryName + ", categoryLevel=" + categoryLevel
+ ", categoryStatus=" + categoryStatus + ", categoryOrder="
+ categoryOrder + ", createdPreson=" + createdPreson + ", updatedPerson=" + updatedPerson + "]";
}
你可以把return 最前面的Category去掉,或者改成你想要的样子
解决方案六:
for(int i=0;i<list.size();i++){
Map map =(Map)list.get(i);
System.out.println("num"=map.get('num')+",name="+map.get('name'));
}