【问题标题】:Transferring one object's ArrayList's contents to another [duplicate]将一个对象的 ArrayList 的内容转移到另一个 [重复]
【发布时间】:2019-03-04 21:40:47
【问题描述】:

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

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

【问题讨论】:

    标签: java string object arraylist methods


    【解决方案1】:

    您无法修改当前正在迭代的集合:

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

    【讨论】:

    • 感谢这工作。我意识到我正在遍历错误的 ArrayList,应该是 other.pages 而不是 pages
    • 如果它对你有用,你应该接受这个答案,并给予@wikisky他应得的荣誉:D
    猜你喜欢
    • 1970-01-01
    • 2014-06-15
    • 2012-06-30
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    相关资源
    最近更新 更多