Java 从数组中删除随机元素并将其添加到另一个数组:OutOfIndex-bound错误

Java 从数组中删除随机元素并将其添加到另一个数组:OutOfIndex-bound错误,java,arraylist,indexoutofboundsexception,Java,Arraylist,Indexoutofboundsexception,这个代码有什么问题? 我试图从一个ArrayList中选取一个随机元素,并将其移动到另一个ArrayList以创建置换。它总是给我一些越界的错误 int size = 10; for (int i = 0; i < 10; i++) { int r = (int) (Math.random() * (size)); random.remove(r); permutations.add(random.get(r)); size--;

这个代码有什么问题? 我试图从一个ArrayList中选取一个随机元素,并将其移动到另一个ArrayList以创建置换。它总是给我一些越界的错误

int size = 10;
for (int i = 0; i < 10; i++) {
    int r = (int) (Math.random() * (size));
        
    random.remove(r);
    permutations.add(random.get(r));
    size--;
        
}
int size=10;
对于(int i=0;i<10;i++){
int r=(int)(Math.random()*(size));
随机删除(r);
置换.add(random.get(r));
大小--;
}

问题在于指令的顺序,首先从位置r移除指令,然后尝试从位置r获取指令

    permutations.add(random.get(r));       
    random.remove(r);

此外,如果您想从集合中删除arrayList,我建议您使用迭代器。迭代器的方法有next()获取数组中的下一个元素,remove()移除实际元素,您可以检查

,因为如果您有random并从位置r移除,则在随机位置r中没有任何内容。如果您检查stacktrace(控制台中的错误消息),您将看到在哪一行有错误,请在提问时也在问题中填写此信息