将一个对象放在一个list中,在将这个对象的属性改变,再放入这个list中,这个list中的对象属性是不是一样的呢
user对象实体:
public class User implements Serializable
{
/**
*注释内容
*/
private static final long serialVersionUID = -7674410922088958275L;
//姓名
private String name;
//性别
private String sex;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getSex()
{
return sex;
}
public void setSex(String sex)
{
this.sex = sex;
}
@Override
public String toString()
{
return "User [name=" + name + ", sex=" + sex + "]";
}
}
//**改变属性放在同一个list中
public class TestChangeUser
{
public static void main(String args[])
{
User user=new User();
List<User>userList=new ArrayList<User>();
user.setName("呵呵");
user.setSex("男");
userList.add(user);
user.setName("嘻嘻");
user.setSex("女");
userList.add(user);
for(User userInfo:userList)
{
System.out.println(userInfo);
}
}
}
输出的结果会是: User [name=嘻嘻, sex=女]
User [name=嘻嘻, sex=女]
user对象实体:
public class User implements Serializable
{
/**
*注释内容
*/
private static final long serialVersionUID = -7674410922088958275L;
//姓名
private String name;
//性别
private String sex;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getSex()
{
return sex;
}
public void setSex(String sex)
{
this.sex = sex;
}
@Override
public String toString()
{
return "User [name=" + name + ", sex=" + sex + "]";
}
}
//**改变属性放在同一个list中
public class TestChangeUser
{
public static void main(String args[])
{
User user=new User();
List<User>userList=new ArrayList<User>();
user.setName("呵呵");
user.setSex("男");
userList.add(user);
user.setName("嘻嘻");
user.setSex("女");
userList.add(user);
for(User userInfo:userList)
{
System.out.println(userInfo);
}
}
}
输出的结果会是: User [name=嘻嘻, sex=女]
User [name=嘻嘻, sex=女]
这个是因为改变前后的user对象始终指向同一个内存区域
size=large]首先,你要清楚List和Set的区别:List是有序和可重复;Set是无序,但是不能重复.
其次,在一对多关联中.想象一下这种情况:你要更新从表记录;
从List中得到从表的一个对象引用,然后你对这样对象修改后,又放回List,你的List中就包括两个从表对象的引用.你在保存时,这两个引用,你觉得会保存两次还是一次?
而如果是Set,你得到从表对象的引用,之后修改从表对象的内容,你再往Set里面放,Set里面因为已经有这个从表对象的引用,就不会再给里面加.这样,你的Set里面还是只有一个从表对象的引用.这样你保存,这个从表对象只保存一次.[/size]