避免在循环中重置列表

  • 本文关键字:列表 循环 java list
  • 更新时间 :
  • 英文 :


我正在尝试创建一个循环内的对象列表。但是当我将元素赋值给列表时,每次迭代都会重置列表。

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。