首页 > 解决方案 > 将一个对象的 ArrayList 的内容传输到另一个对象

问题描述

我正在尝试将 ArrayList 的内容从一个 Book 对象传输到另一个 Book 对象。该方法将被称为

bookA.transfer(bookB);

但是,使用下面的代码,我收到一条错误消息“java.util.ConcurrentModificationException”,并在“for(String page: pages) {”行显示问题。这两个对象都有一个名为 pages 的 ArrayList,当我将一个用作“pages.get(...)”(这是调用该方法的对象)和“other. 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);
 }

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

标签: javastringobjectarraylistmethods

解决方案


您不能修改当前迭代的集合:

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

推荐阅读