java - 将一个对象的 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);
}
*另一个问题是关于使用我不是的迭代器类。
解决方案
您不能修改当前迭代的集合:
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();
推荐阅读
- node.js - mongo 中的嵌套字段更新(更新查询中的更新)
- docker - 如何让 OracleDB 与 Express 连接?
- java - Checkstyle-IDEA IntelliJ 插件在应该时没有显示问题
- sql - 如何将 clob 附加到特定位置的 clob?
- c++ - Clang 10 无法在 macOS 10.12 上将 C++ 应用程序与 CMake 链接起来
- python - 我有一个从 .OptionMenu(command=argument) 获取参数的函数,在我分配数据框的函数内部
- sql - 如何计算表示按另一列分组的比例的比率?
- c# - 正则表达式获取大括号之间的文本,包括其他大括号
- java - 使用 OpenGLES 2 在 android(java) 中渲染 3D 对象时缺少某些部分
- microsoft-graph-api - 如何通过 C# Microsoft.Graph SDK 向日历添加或更新多个事件?