ArrayList 前面的值被後面的值覆蓋的原因

1. 代碼示例:

public class ListTest { public static void main(String[] args) { // TODO Auto-generated method stub         List<User> list =new ArrayList<User>();         User user=new User();         user.setName("jack");         user.setPassword("111");         list.add(user);         user.setName("JAY");         user.setPassword("222");         list.add(user);                  User user1=new User();         user1.setName("jim");         user1.setPassword("333");         list.add(user1);                  for(Iterator<User> i = list.iterator();i.hasNext(); ){          User str = (User) i.next();          System.out.println(str.getName()+"   "+str.getPassword());          } } } User類: public class User { private String name; private String password; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }

2. 控制檯打印信息:

JAY   222
JAY   222
jim   333
3.  解析:add加進去的是對象的一個引用,使用同一個對象時,每次都更新了這個引用的值,所以list裏面的值都一樣的。
如果使用for等循環時,注意把User user=new User()
放到循環裏面,每次都生成一個新的對象,更改自身不會對其他元素有影響。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章