java - ArrayList索引越界异常

标签 java arraylist replace indexoutofboundsexception

最近在使用 arrayList 时我发现了一个奇怪的问题。我想在数组列表中保留 2 个元素,并且希望将 object1 保留在元素 0 中,将 object2 保留在 element1 中。

我正在循环中决定这一点。

当它碰巧添加第一个元素时,它会抛出indexOutofBounds。根据 java doc,由于索引大于其大小,因此执行此操作。

public static void main(String[] args) 
    {
        ArrayList<String> list = new ArrayList<String>();
        list.add(1,"SECONDITEM"); // throwing  due to size is not set
        list.add(0,"FIRSTITEM");

        int postn=0;
        for(String item:list){

            System.out.println("Position "+postn+" :"+item);
            postn++;
        }
    }

然后我尝试将其他项目设置为 0,1 元素中的占位符并尝试执行相同的操作

    public static void main(String[] args) 
    {
        ArrayList<String> list = new ArrayList<String>();
        list.add(0,"x");
        list.add(1,"y");

        list.add(1,"SECONDITEM");

        list.add(0,"FIRSTITEM");

        int postn=0;
        for(String item:list){

            System.out.println("Position "+postn+" :"+item);
            postn++;
        }
    }

    Output:
    Position 0 :FIRSTITEM
    Position 1 :x
    Position 2 :SECONDITEM
    Position 3 :y

如何解决这个问题。我发现的一种方法是删除索引中的元素并添加该元素。有更好的选择吗?

public static void main(String[] args) 
    {
        ArrayList<String> list = new ArrayList<String>();
        list.add(0,"x");
        list.add(1,"y");
        list.remove(1);
        list.add(1,"SECONDITEM");
        list.remove(0);
        list.add(0,"FIRSTITEM");

        int postn=0;
        for(String item:list){

            System.out.println("Position "+postn+" :"+item);
            postn++;
        }
    }

    Position 0 :FIRSTITEM
    Position 1 :SECONDITEM

最佳答案

.add()方法在给定位置插入元素并相应地移动另一个元素

要覆盖特定索引处的值,您必须使用.set(position, value)

尝试设置方法..

    list.add(0,"x");
    list.add(1,"y");

    list.set(1,"SECONDITEM");

    list.set(0,"FIRSTITEM");

现在它将返回仅有的两个值。

关于java - ArrayList索引越界异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21507552/

相关文章:

jquery - 更改 td 内的纯文本的一部分

java - 如何使addActionListener和add工作?

java - 无法将字母转换为数字并反转

Java - Collections.sort() 问题

java - 枚举列表 : I have 2 enums and I have to make a list/array

c - 如何替换 2 个数组之间的值 (C)

python - 是否可以对数据帧中的列列表/子集运行替换?

java - GUI 应用程序中的变量未更新

java - 如何克服异常——在java中发送电子邮件时字符串 ``中的非法地址

Java动态方法返回类型