我正在尝试将ArrayList的内容从一个Book对象传输到另一个Book对象。该方法称为
bookA.transfer(bookB);
但是,使用下面的代码,我得到一个错误,指出“ java.util.ConcurrentModificationException”,并在“ for(String page:pages){”行中显示了该问题。这两个对象都有一个称为页面的ArrayList,当我将其中一个用作“ pages.get(...)”时,我不确定它是否在两个不同的列表之间有所区别。 pages.get(...)“,它是作为参数传递以传递其内容的对象。这是正确的方法吗?还是我在其他地方出了错?
public class Book {
ArrayList<String> pages;
public Book ()
{
pages = new ArrayList<String>();
}
public void transfer(Book other) {
int i = 0;
for(String page: pages) {
String temp = other.pages.get(i);
pages.add(temp);
other.pages.remove(i);
i++;
}
System.out.println("Book" + pages);
System.out.println("Book" + other.pages);
}
*另一个问题是关于使用不是的迭代器类。
答案 0 :(得分:2)
您不能修改您当前迭代的集合:
for(String page: **pages**) {
String temp = other.pages.get(i);
**pages.add(temp);**
other.pages.remove(i);
i++;
}
不确定代码背后的逻辑是什么,为什么不这样称呼它:
pages.addAll(other.pages);
other.pages.clear();