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么?还有如何解决? 

解决方案 »

  1.   

    我也不会,你看这样是不是就对了,  
      List a = new ArrayList();  
        for (int i=0;i  <3;i++) {  
          a.add(i,"1");  
        }  
        a.add("4","1");  
      

  2.   

    for循环后,a里面总共有3个元素,即a.size()为3;
    执行a.add(4,"1"); 的话,4大于a的size(),这个时候会抛出索引越界的异常
    可以参考API里面的解释 
      

  3.   

    给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,则他会抛出地址越界异常。
      

  4.   

    数据越界,此时数组的长度为3,
    改为
        List a = new ArrayList();  
        for (int i=0;i  <3;i++) {  
          a.add(i,"1");  
        }  
        a.add(3,"1");
        a.add(4,"1");  
    就可以了
      

  5.   

        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"); 
      

  6.   

    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++;
        }
      

  7.   

            越界添加没有太阳   月亮那会亮呢? ygou
      

  8.   

    那为啥子第一次执行的时候没说越界啊!!
    在你for循环了三次,那么他的size则为三,你可以打印出来看下a.size()方法第一次开始的时候size应该是0 那。