【发布时间】:2016-08-30 09:53:58
【问题描述】:
这可能是重复的,但我看不到任何与此错误有关的问题,如果是,请致歉。
我正在尝试使用remove() 方法从我的ArrayList 中删除一个整数,但是它给了我java.lang.UnsupportedOperationException。根据我的理解,remove 方法应该采用int 或整数,或者来自ArrayList 的值,但是这些似乎不起作用并给出相同的错误。
我也尝试使用“深度”作为index,因为这是我要删除的index。
这是我的代码:
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() 不返回 ArrayList。我希望您找到是否可以修改 Arrays.asList() 返回的列表实现。查看使用简单 for 循环进行迭代、使用增强型 for 循环进行迭代和使用 List 的迭代器进行迭代之间的区别。另请参阅何时可以在使用迭代器或增强的 for 循环进行迭代时修改列表,以及何时不能这样做。当您研究这些时,您将清楚您在代码中所做的所有事情以及您遇到的异常情况。在您的情况下,修改虽然迭代不是例外的原因,但仍在研究
-
参见this 帖子,了解如何从
Array创建ArrayList。 -
@BoristheSpider,我是新手,它确实是格式化的,但不知何故它像那样上传了。
标签: java arraylist methods integer int