gpt4 book ai didi

java - 在 while 循环中将对象添加到列表

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:04 24 4
gpt4 key购买 nike

我正在尝试循环一个列表,该列表内部有 4 个数组,每个数组有 7 个值

我正在循环列表,然后当我从列表中获取一个数组时,因为我知道数组有多少个值,所以我分配每个数组索引,如下所示:personObject.setName(String.valueOf(myArray[0 ]) 然后在 while 循环结束时,我将 personObject 添加到 Persons 列表中,如下所示:listOfPersons.add(personObject)。

我的问题是我的列表只填充了相同的对象,我知道我正在循环的列表中的 4 个数组具有不同的值,这是我的代码:

ArrayList<Object> objectList= null;
objectList= _serviceVariable.getObjects(); <--- this works it returns a list with 4 arrays all with diferent values

Person myPerson = new Person();
List<Person> personsList = new List<Person>;

Iterator<Object> itr = objectList.iterator();

while(itr.hasNext())
{
Object[] innerObj = (Object[]) itr.next();

myPerson.setName(String.valueOf(innerObj [0])
myPerson.setLastName(String.valueOf(innerObj [1])
myPerson.setNickName(String.valueOf(innerObj [2])

personsList.add(myPerson);
}

当我打印时,我的人员列表充满了具有相同名字、姓氏和昵称的人,是一个充满具有相同值的相同对象的列表。

最佳答案

每次添加Person 时,您都想添加一个不同 的人,对吗?

因此,您应该每次都在循环中创建一个new Person 对象。不要只在循环外创建一个您不断更改其数据的循环。

// NOT HERE Person myPerson = new Person();
// ...

while(itr.hasNext()) {
Object[] innerObj = (Object[]) itr.next();

Person myPerson = new Person(); // HERE you create a new Person
myPerson.setName(String.valueOf(myArray[0]);
myPerson.setLastName(String.valueOf(myArray[1]);
myPerson.setNickName(String.valueOf(myArray[2]);

personsList.add(myPerson); // add the new person to the list
}

关于java - 在 while 循环中将对象添加到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25940999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com