Java 更改ArrayList中的对象
以下代码是我问题的一个示例:Java 更改ArrayList中的对象,java,arraylist,Java,Arraylist,以下代码是我问题的一个示例: Iterator<Person> currPerson = person.iterator(); while(currPerson.hasNext()){ Person curr = currPerson.next(); // Iterator<Person> currPerson2 = person.iterator(); //EDIT Iterator<Person> currPerson2 =
Iterator<Person> currPerson = person.iterator();
while(currPerson.hasNext()){
Person curr = currPerson.next();
// Iterator<Person> currPerson2 = person.iterator();
//EDIT
Iterator<Person> currPerson2 = this.deepCopy.iterator();
curr.moveLocation();
while (currPerson2.hasNext()){
Person curr2 = currPerson2.next();
// if same spot
if (curr.checkLocation(curr2)){
int index = person.getIndex(curr2);
curr.fight(person.get(index));
}
}
}
Iterator currPerson=person.Iterator();
while(currPerson.hasNext()){
Person curr=currPerson.next();
//迭代器currPerson2=person.Iterator();
//编辑
迭代器currPerson2=this.deepCopy.Iterator();
curr.moveLocation();
while(currPerson2.hasNext()){
Person curr2=currenperson2.next();
//如果同一地点
if(当前检查位置(当前2)){
int index=person.getIndex(curr2);
当前战斗(人员获取(索引));
}
}
}
如果我从同一个arrayList创建另一个迭代器,对第一个迭代器的任何更改是否会影响另一个迭代器;并使moveLocation()之后的while循环无法正常工作
谢谢 对。你在处理相同的实例,你只是在它们上面迭代两次。在我看来,这有点像牛仔编码。我建议您更改业务逻辑。当您说currPerson2=person.iterator();,您仅对同一对象进行了另一次引用。如果你想创建一个新的对象数组,你必须这样做:currPerson2=newiterator();我在上面做了一些编辑。假设我有一个方法制作了一个深度副本并进行了迭代,如果我在person ArrayList上使用getIndex,我可以使用该索引为fight()方法获取person对象吗?您能解释一下您试图从更高的级别实现什么,以及此代码如何应用于此吗?这似乎有点复杂,但这可能是因为我们错过了更大的背景。