Java 下面的代码中有没有克服ConcurrentModificaionError的方法,或者更好的实现方法

Java 下面的代码中有没有克服ConcurrentModificaionError的方法,或者更好的实现方法,java,iterator,Java,Iterator,我想做的是创建一个排序函数,它在ArrayList上使用迭代器。我想反向遍历数组,检查第I个和第(I-1)个元素中较小的一个,如果第I个元素较小,我将其移动到数组的前面 这是我对这个案子的看法: import java.util.*; // Other imports go here // Do NOT change the class name class Main { public void cq1(ArrayList<Integer> list) { List

我想做的是创建一个排序函数,它在ArrayList上使用迭代器。我想反向遍历数组,检查第I个和第(I-1)个元素中较小的一个,如果第I个元素较小,我将其移动到数组的前面

这是我对这个案子的看法:

import java.util.*;
// Other imports go here
// Do NOT change the class name
class Main
{
    public void cq1(ArrayList<Integer> list) { 
    ListIterator<Integer> l1=list.listIterator();
    ListIterator<Integer> l2=list.listIterator();
    while(l1.hasNext()){l1.next();l2.next();}//loop to send the listIterator to the end of ArrayList
    l1.previous();//make this iterator point to the second last element
  while(l1.hasPrevious()) 
  { 
      int a=l1.previous();
      int b=l2.previous();
    if (a < b) 
    {
      list.remove(l1.previousIndex()+1); 
      list.add(0, a); 
    } 
      System.out.println(list); 
  } 

}//fn
    public static void main(String[] args)
    {
        Main obj=new Main();
        int a[]={-4, 16, 9, 1, 64, 25, 36, 4, 49};
        ArrayList<Integer> oe = new ArrayList();
        for(int i :a)oe.add(i);
        obj.cq1(oe);
    }//main
    }//class
import java.util.*;
//其他进口商品都在这里
//不要更改类名
班长
{
公共无效cq1(数组列表){
ListIterator l1=list.ListIterator();
ListIterator l2=list.ListIterator();
while(l1.hasNext()){l1.next();l2.next();}//循环将listIterator发送到ArrayList的末尾
l1.previous();//使此迭代器指向最后一个元素
而(l1.hasPrevious())
{ 
int a=l1.previous();
intb=l2.previous();
if(a
问题是,在第一次迭代之后出现了异常:ConcurrentModificationError;突然出现


我还尝试在前进而不是后退时执行相同的操作。第一次迭代后会出现相同的错误。

尝试使用listIterator.remove方法而不是list.remove方法执行删除操作。List.remove在循环删除元素时通常会抛出ConcurrentModificationException。您知道java有一个用于集合的方法和一个用于数组的方法,对吗?。不要再创造新的环境wheel@Fabien我会查的,谢谢。@RVISHAL是的,我查过,我一直在用它。但是我想尝试一些新的东西,所以我做了。就这样。我认为它没有任何问题。请尝试使用listIterator.remove方法而不是list.remove方法执行删除操作。List.remove在循环删除元素时通常会抛出ConcurrentModificationException。您知道java有一个用于集合的方法和一个用于数组的方法,对吗?。不要再创造新的环境wheel@Fabien我会查的,谢谢。@RVISHAL是的,我查过,我一直在用它。但是我想尝试一些新的东西,所以我做了。就这样。我认为没有什么问题。