关于List的问题

Hannibal005 2008-04-09 06:28:46
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么?还有如何解决?
...全文
138 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
xby123 2008-04-11
  • 打赏
  • 举报
回复
dd
niuhua 2008-04-11
  • 打赏
  • 举报
回复
学习了
xql80329 2008-04-11
  • 打赏
  • 举报
回复
结贴吧 都解决了!
liluyemin 2008-04-11
  • 打赏
  • 举报
回复
那为啥子第一次执行的时候没说越界啊!!


在你for循环了三次,那么他的size则为三,你可以打印出来看下a.size()方法

第一次开始的时候size应该是0 那。。。。
peng3409 2008-04-10
  • 打赏
  • 举报
回复
同意七楼八楼
ariesying 2008-04-10
  • 打赏
  • 举报
回复
8楼正解
xql80329 2008-04-10
  • 打赏
  • 举报
回复
7楼 8楼 回答正确 数组越界问题
my_rock 2008-04-10
  • 打赏
  • 举报
回复




越界添加。。。没有太阳 月亮那会亮呢? ygou
asdftest 2008-04-09
  • 打赏
  • 举报
回复
这里有你要的答案:
qlyiua888 2008-04-09
  • 打赏
  • 举报
回复
同意7楼
h273166784 2008-04-09
  • 打赏
  • 举报
回复
o(∩_∩)o...哈哈
学习下
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++;
}
老紫竹 2008-04-09
  • 打赏
  • 举报
回复
    List a = new ArrayList(); 
for (int i=0;i <3;i++) {
a.add(i,"1");
}
// 运行完毕后,你最后添加的是 a.add(2,"1"); 而不是 3,"1", 所以异常了
a.add(4,"1");
likgui 2008-04-09
  • 打赏
  • 举报
回复
数据越界,此时数组的长度为3,
改为
List a = new ArrayList();
for (int i=0;i <3;i++) {
a.add(i,"1");
}
a.add(3,"1");
a.add(4,"1");
就可以了
fuyou001 2008-04-09
  • 打赏
  • 举报
回复
我刚打个电话,就这么多人了!
kokobox 2008-04-09
  • 打赏
  • 举报
回复
明明前面就小宝一个人在的,发完竟然这么多人了。

kokobox 2008-04-09
  • 打赏
  • 举报
回复
给lz看一下ArrayList中add方法的源码

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()方法,注意他的这段代码


if (index > size || index < 0)
throw new IndexOutOfBoundsException(
"Index: "+index+", Size: "+size);


你传入的index为4,大于了他的size,则他会抛出地址越界异常。

snakexiay 2008-04-09
  • 打赏
  • 举报
回复
for循环后,a里面总共有3个元素,即a.size()为3;
执行a.add(4,"1"); 的话,4大于a的size(),这个时候会抛出索引越界的异常
可以参考API里面的解释
yisheng1025 2008-04-09
  • 打赏
  • 举报
回复
我也不会,你看这样是不是就对了,
List a = new ArrayList();
for (int i=0;i <3;i++) {
a.add(i,"1");
}
a.add("4","1");
fuyou001 2008-04-09
  • 打赏
  • 举报
回复
抢个沙发!晚点来看看

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧