import java.util.*;
class TestArray {
public static void main(String[] args) {
char a = '1', b = '2', c = '3', d = '4';
ArrayList a1 = new ArrayList(1000);
a1.add(0,new Character(a)) ;
a1.ensureCapacity(2);
a1.add(2, new Character(b));
System.out.println(a1.size());
}
}
出现错误:
java.lang.IndexOutOfBoundsException: Index: 2, Size: 1
class TestArray {
public static void main(String[] args) {
char a = '1', b = '2', c = '3', d = '4';
ArrayList a1 = new ArrayList(1000);
a1.add(0,new Character(a)) ;
a1.ensureCapacity(2);
a1.add(2, new Character(b));
System.out.println(a1.size());
}
}
出现错误:
java.lang.IndexOutOfBoundsException: Index: 2, Size: 1
a1.add(2, new Character(b));
这一句应该改为
a1.add(1, new Character(b));
我就想把放在第三个位置!有什么办法不?
用“a1.ensureCapacity(2);”增加容量,
为什么不可以?
class TestArray {
public static void main(String[] args) {
char a = '1', b = '2', c = '3', d = '4';
ArrayList a1 = new ArrayList(1);
System.out.println(a1.size()+a1.toString());
a1.add(0,new Character(a)) ;
System.out.println(a1.size()+a1.toString());
a1.ensureCapacity(2);
System.out.println(a1.size()+a1.toString());
a1.add(1,null);
System.out.println(a1.size()+a1.toString());
a1.add(2, new Character(b));
System.out.println(a1.size()+a1.toString());
}
}Result:
0[]
1[1]
1[1]
2[1, null]
3[1, null, 2]public void add(int index,
E element)将指定的元素插入此列表中的指定位置。向右移动当前位于该位置的元素(如果有)以及所有后续元素(将其索引加 1)。 指定者:
接口 List<E> 中的 add
覆盖:
类 AbstractList<E> 中的 add
参数:
index - 指定元素所插入位置的索引。
element - 要插入的元素。
抛出:
IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index > size())。
a1.ensureCapacity(2);//这句执行以后a1.size()还是1。
a1.add(2, new Character(b));//2已经超出范围了
1. arraylist中的add(int index, E )方法,(index < 0 || index > size())时抛出IndexOutOfBoundsException;
2. size()方法返回的是当前列表中的元素个数,而不是
申请的长度;
综上,在向列表中添加第二个数时,size方法返回的是1<index(=2),所以抛出异常。
来看看