Java ArrayList删除方法不工作?

Java ArrayList删除方法不工作?,java,arraylist,methods,integer,int,Java,Arraylist,Methods,Integer,Int,这可能是重复的,但我看不出有任何关于此错误的问题,如果是,请道歉 我试图使用remove方法从ArrayList中删除一个整数,但是它给了我java.lang.UnsupportedOperationException。据我所知,remove方法应该接受int或Integer,或者从ArrayList中获取一个值,但是这些方法似乎不起作用,并给出相同的错误 我还尝试使用深度作为索引,因为这是我想要删除的索引 这是我的密码: import java.util.*; public class EP

这可能是重复的,但我看不出有任何关于此错误的问题,如果是,请道歉

我试图使用remove方法从ArrayList中删除一个整数,但是它给了我java.lang.UnsupportedOperationException。据我所知,remove方法应该接受int或Integer,或者从ArrayList中获取一个值,但是这些方法似乎不起作用,并给出相同的错误

我还尝试使用深度作为索引,因为这是我想要删除的索引

这是我的密码:

import java.util.*;

public class EP{
public static List<Integer> items = Arrays.asList(12, 13, 48, 42, 38,     2827, 827, 828, 420);
public static void main(String[]args){
System.out.println("Exam List");
for(Integer i: items){
    System.out.println(i);
}
    Scanner scan = new Scanner(System.in);
System.out.println("Enter depth");
int depth = scan.nextInt();
System.out.println("Enter value");
int value = scan.nextInt();
System.out.println(mark(depth, value));
}

public static int  mark(int depth, int value){
int ret = -1; //This ensures -1 is returned if it cannot find it at the specified place
for(Integer i: items){
    if(items.get(depth) == (Integer)value){ //This assummes depth starts at 0
    ret = value;
    items.remove(items.get(depth)); // has UnsupportedOperationException
    }
    }
System.out.println("Updated Exam List");
for(Integer j: items){
    System.out.println(j);
}
return ret;
}
}
Arrays.asList返回的列表实现不是java.util.ArrayList。它是在Arrays类中定义的一个不同的实现,Arrays类是一个固定大小的列表。因此,您不能在该列表中添加/删除元素

您可以通过创建一个由列表元素初始化的新java.util.ArrayList来解决此问题:


也就是说,在使用增强的for循环对项目进行迭代的循环中调用items.remove将不起作用,它将抛出CuncurrentModificationException。如果要删除迭代器指向的当前元素,可以使用传统的for循环,也可以使用显式迭代器,但情况似乎并非如此。

请格式化代码。这完全无法辨认。Arrays.asList不返回ArrayList。我希望您能找到是否可以修改Arrays.asList返回的列表实现。查看使用simple for循环进行迭代、使用enhanced for循环进行迭代和使用列表的迭代器进行迭代之间的区别。还可以查看何时可以在使用迭代器或增强for循环进行迭代时修改列表,以及何时无法修改列表。当您研究这些时,您将清楚您在代码中所做的一切,以及您所获得的异常。在您的案例中,迭代时的修改并不是异常的原因,但请参见关于从数组创建ArrayList的帖子。@BoristheSpider,我是新来的,它确实是格式化的,但不知怎么的,它是这样上传的。
public static List<Integer> items = new ArrayList<>(Arrays.asList(12, 13, 48, 42, 38, 2827, 827, 828, 420));