Sat*_*ish 0 java replace arraylist indexoutofboundsexception
最近在使用 arrayList 时,我发现了一个奇怪的问题。我想在数组列表中保留 2 个元素,并希望在元素 0 中保留 object1,在 element1 中保留 object2。
我在循环中决定这个。
当它碰巧添加第一个元素时,它会抛出 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++;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试将其他项目设置为 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
.add() 方法在给定位置插入元素并相应地移动另一个元素
要覆盖特定索引处的值,您必须使用.set(position, value)
尝试设置方法..
list.add(0,"x");
list.add(1,"y");
list.set(1,"SECONDITEM");
list.set(0,"FIRSTITEM");
Run Code Online (Sandbox Code Playgroud)
现在它将返回仅有的两个值。