当前位置: 首页 > 知识库问答 >
问题:

将arraylist的元素移动到最后一个位置

狄侯林
2023-03-14

我有一个复杂对象的数组列表Box。我需要将这些框中的特定元素移动到arrayList的最后一个位置,并移除原始元素,如图所示:

我的代码是这样的,但我得到了这个错误:ConcurrentModificationException

for (Box i : boxes) {  //where boxes is the arrayList
 if (i.mouseOver()) {  //does the swapping I need if the mouse is over the box
  
  Box copy=i;
  boxes.remove(i);  //these 3 lines are where I think the mistake is
  boxes.add(copy);
 }
}

共有3个答案

王兴腾
2023-03-14

一旦修改了(通过删除和/或添加元素),就不能继续对其进行迭代。可以避免这种情况的一种方法是,一旦移动要移动的,将中断退出循环:

for (Box i : boxes) {  //where boxes is the arrayList
    if (i.mouseOver()) {  //does the swapping I need if the mouse is over the box
        // No need to create a new reference
        boxes.remove(i);
        boxes.add(i);
        break;
    }
}
洪华皓
2023-03-14

在for each循环中,不能删除条目。

for (int i = 0; i < boxes.size(); i++) {
    if (boxes.get(i).mouseOver())
        boxes.add(boxes.remove(i));
}
帅颖逸
2023-03-14

如果java.util.是您得到的错误,请尝试不要使用高级的循环,而只使用常规的循环。在您的代码中,我还看到您试图从列表中删除带有实际对象的元素。在Arraylist中,您只能通过索引删除,而不是元素。

我认为下面应该有用。

for (int i = 0; i < boxes.size(); i++) {
    if (boxes.get(i).mouseOver()) { 
        boxes.add(boxes.remove(i));
    }
}

 类似资料:
  • 问题内容: 我想将一个DIV元素移到另一个元素中。例如,我要移动此对象(包括所有子对象): 到这个: 这样我有: 问题答案: 曾经尝试过普通的JavaScript … 吗?

  • 我有一个包含以下元素的ArrayList: 我要将移到之后,以以下顺序: 我使用此代码: 上述代码的结果如下: 移动一个又一个元素的最佳方法是什么?

  • 问题内容: 下面有一个for循环代码。我通过调用一个自定义显示函数发现aBook arrayList对象仅添加了最后一个类对象三次。为什么会这样呢? 这是我的LiFiAddressBook类 } 问题答案: 由于使用static关键字,每次 调用构造函数时,旧值都会被新值覆盖,并且在打印列表中的元素时,LiFiAddressBook类的对象变量将指向相同的对象。因此打印相似的对象。 需要明确的是,

  • 问题内容: 我想将一个DIV元素移到另一个元素中。例如,我要移动此对象(包括所有子对象): 到这个: 这样我有: 问题答案: 曾经尝试过普通的JavaScript … 吗?

  • 给定输入的XML数据: 因此,我期望通过以下条件输出数据:“for-eachTime_Off_Type_GroupTime_Off_Entry_IDRequest_or_CorrectionTime_Off_Type_Group” 输出示例:

  • 当新项目添加到视图中时,我试图使我的listview移动到最后一个项目。有了textview,我可以通过这样做来实现这一点 但对于带有适配器的listview,我似乎无法找到调用的方法。我的适配器设置