我正在尝试创建一个循环内的对象列表。但是当我将元素赋值给列表时,每次迭代都会重置列表。
List<People> peopleList = new ArrayList<People>();
People people = new People();
public void test() {
for(int i=0;i<2;i++){
people.name = "name "+i;
people.age = "age "+i;
peopleList .add(people);
}
}
执行循环后,peopleList的值保持不变。
我期望有一个包含2项的列表(peopleList)。
您需要在循环中创建您的人员。现在你只是每次更新同一个对象。
List<People> peopleList = new ArrayList<People>();
public void test() {
for(int i=0;i<2;i++){
People people = new People();
people.name = "name "+i;
people.age = "age "+i;
peopleList.add(people);
}
}
实际上问题是您多次添加相同的人对象。因为people是引用数据类型,所以当您向列表中添加时,不会添加新对象。
在循环
中创建一个新对象List<People> peopleList = new ArrayList<People>();
public void test() {
for(int i=0;i<2;i++){
People people = new People();
people.name = "name "+i;
people.age = "age "+i;
peopleList.add(people);
}
}
现在应该可以了
如果您想了解更多关于java中的基本数据类型和引用数据类型以及对象的信息,可以参考这篇文章https://java-programming.mooc.fi/part-5/4-objects-and-references。