将一个对象的ArrayList的内容传输到另一个

时间:2018-09-28 21:44:17

标签: java string object arraylist methods

我正在尝试将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);
 }

*另一个问题是关于使用不是的迭代器类。

1 个答案:

答案 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();