List a = new ArrayList();
for (int i=0;i <3;i++) {
a.add(i,"1");
}
a.add(4,"1"); 这样的为什么 a.add(4,"1"); 会报错误,难道不能分2次add么?还有如何解决?
for (int i=0;i <3;i++) {
a.add(i,"1");
}
a.add(4,"1"); 这样的为什么 a.add(4,"1"); 会报错误,难道不能分2次add么?还有如何解决?
解决方案 »
- 恳求:java中如何实现数字的集合的所有组合,并将所有数字的组合列举出来?谢谢!
- 大家进来看看这到底是怎么回事
- 大家帮忙解决一下。谢谢哦
- java.sql.SQLException: Io 异常: Broken pipe 什么意思?
- 一个关于Jfreechart的问题
- 如何实现行的拖动
- jdk1.3.6到jdk1.4.1 !!
- 求助,为什么JBUILDER菜单鼠标点击没反应
- 万分急愤,本人在一个问题中提出从什么地方下载visual age for java 3.5或更高版本,有朋友给答案,我一夜没睡觉从所给网址上下载,结构竟然是2.0版本!!!!!!!!!!!!
- c版aes加密后蜜文都是整数字节,java版aes加密后可能会有负数。
- 怎末还是运行不出来?
- 冇得结怎末回事?
List a = new ArrayList();
for (int i=0;i <3;i++) {
a.add(i,"1");
}
a.add("4","1");
执行a.add(4,"1"); 的话,4大于a的size(),这个时候会抛出索引越界的异常
可以参考API里面的解释
if (index > size || index < 0)
throw new IndexOutOfBoundsException(
"Index: "+index+", Size: "+size); ensureCapacity(size+1); // Increments modCount!!
System.arraycopy(elementData, index, elementData, index + 1,
size - index);
elementData[index] = element;
size++;
}在你for循环了三次,那么他的size则为三,你可以打印出来看下a.size()方法,注意他的这段代码
if (index > size || index < 0)
throw new IndexOutOfBoundsException(
"Index: "+index+", Size: "+size);
你传入的index为4,大于了他的size,则他会抛出地址越界异常。
改为
List a = new ArrayList();
for (int i=0;i <3;i++) {
a.add(i,"1");
}
a.add(3,"1");
a.add(4,"1");
就可以了
for (int i=0;i <3;i++) {
a.add(i,"1");
}
// 运行完毕后,你最后添加的是 a.add(2,"1"); 而不是 3,"1", 所以异常了
a.add(4,"1");
学习下
public void add(int index, E element) {
if (index > size || index < 0)
throw new IndexOutOfBoundsException(
"Index: "+index+", Size: "+size); ensureCapacity(size+1); // Increments modCount!!
System.arraycopy(elementData, index, elementData, index + 1,
size - index);
elementData[index] = element;
size++;
}
在你for循环了三次,那么他的size则为三,你可以打印出来看下a.size()方法第一次开始的时候size应该是0 那。