集合中存放的是对象的引用,所以只要这个引用变了,集合中的对象状态就变了;可以得知:只要这个集合对象不销毁,取出的集合中的对象,可以随意改变而不需要在存入集合中。
public static void main(String[] args) {
Person person = new Person();
List list = new ArrayList();
String[] strs = new String[]{"ww","yy","ff"};
for(int i=0;i<strs.length;i++)
{
person.setName(strs[i]);
list.add(person);//这样添加到list中的始终是同一个对象的引用,所以list中保存的都是最后一次被添加的对象的引用
System.out.println(list);
}
应该为:
public static void main(String[] args) {
Person person = null;
List list = new ArrayList();
String[] strs = new String[]{"ww","yy","ff"};
for(int i=0;i<strs.length;i++)
{
person = new Person();
person.setName(strs[i]);
list.add(person);
System.out.println(list);
}
还有一个关于集合的问题:
public static void main(String[] args) {
Person person = null;
List list = null;
String[] strs = new String[]{"ww","yy","ff"};
for(int i=0;i<strs.length;i++)
{
person = new Person();
person.setName(strs[i]);
list = new ArrayList();
list.add(person);//这种不管循环多少次,这个集合因为是每次循环就重新创建新的,所以循环完后,集合中保存的只有最后一个对象
System.out.println(list);
}