Java Can';无法从列表中删除元素,因为超出边界异常

Java Can';无法从列表中删除元素,因为超出边界异常,java,list,arraylist,Java,List,Arraylist,我有一个列表nums=new ArrayList(),我这样做: for(int i=1;i<=9;i++) nums.add(i); for(int i=1;i传入一个整数,而不是int。这将确保使用List\remove(Object)而不是List\remove(int)这个问题措辞奇怪。 因此,这两种解决方案可以如下所示 按索引删除 按值删除 1) 如果要按索引删除,则必须添加一些逻辑,以确保生成的数字永远不会超过list.size() 2) 如果要按值删除,则可以遍历列

我有一个
列表nums=new ArrayList()
,我这样做:

for(int i=1;i<=9;i++)
    nums.add(i);

for(int i=1;i传入一个
整数,而不是
int
。这将确保使用
List\remove(Object)
而不是
List\remove(int)
这个问题措辞奇怪。
因此,这两种解决方案可以如下所示

  • 按索引删除
  • 按值删除
  • 1) 如果要按索引删除,则必须添加一些逻辑,以确保生成的数字永远不会超过
    list.size()

    2) 如果要按值删除,则可以遍历列表并删除要删除的值。现在,您必须弄清楚如何使用阵列中的额外空间。(假设您从不处理负值,您可以添加-1的“占位符”)

    for(int i=0;i
    不要使用int,因为这将删除索引中的任何内容,而不是匹配的对象。您需要使用Integer类型的东西,它有一个接受int的构造函数,应该是一个快速修复方法

    int toRemove = 9;
    
    nums.remove(new Integer(toRemove));
    
    nums.remove((整数)9);我们应该修复它; 您可以向其中传递一个int,因此它假定您正在调用remove by index方法remove(int-index)。通过显式指定9作为对象,您正在使用列表的remove(object o)方法。 有关

    。。。或者调用
    remove(Integer.valueOf(genNumber))调用
    删除(对象o)
    int toRemove = 9;
    
    nums.remove(new Integer(toRemove));