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对象吗?您能解释一下您试图从更高的级别实现什么,以及此代码如何应用于此吗?这似乎有点复杂,但这可能是因为我们错过了更大的背景。