错误代码:
运行结果:
运行结果:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args) {
List<User> userList = new ArrayList<User>();
User user1 = new User();
user1.setName("张三");
user1.setAge(15);
userList.add(user1);
User user2 = new User();
user2.setName("李四");
user2.setAge(25);
userList.add(user2);
User user3 = new User();
user3.setName("王五");
user3.setAge(35);
userList.add(user3);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String,Object> map = new HashMap<String, Object>();
if(null != userList && userList.size() > 0 ){
for (User user : userList) {
map.put("name", user.getName());
map.put("age", user.getAge());
list.add(map);
}
}
System.out.println(list);
}
}
实体类User:
import java.io.Serializable;
public class User implements Serializable{
private static final long serialVersionUID = 5681523320437838500L;
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
运行结果:
[{age=35, name=王五}, {age=35, name=王五}, {age=35, name=王五}]
这样的结果显示不是我们要的,但问题出现在哪里呢?
循环往list中放入map的时候,一直是同一个map,这样就会导致后面的数据覆盖前面的数据,把new HashMap的操作放在for循环里面,修改代码为:
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
if(null != userList && userList.size() > 0 ){
for (User user : userList) {
Map<String,Object> map = new HashMap<String, Object>();
map.put("name", user.getName());
map.put("age", user.getAge());
list.add(map);
}
}
运行结果:
[{age=15, name=张三}, {age=25, name=李四}, {age=35, name=王五}]