List re_pro = new LinkedList<>();
                re_pro.add(5,"as");
报错 下标越界。
然后我看源码
 public void add(int location, E object) {
        if (location >= 0 && location <= size) {
            Link<E> link = voidLink;
            if (location < (size / 2)) {
                for (int i = 0; i <= location; i++) {
                    link = link.next;
                }
            } else {
                for (int i = size; i > location; i--) {
                    link = link.previous;
                }
            }
            Link<E> previous = link.previous;
            Link<E> newLink = new Link<E>(object, previous, link);
            previous.next = newLink;
            link.previous = newLink;
            size++;
            modCount++;
        } else {
            throw new IndexOutOfBoundsException();
        }
    }
这里面size是搞什么的 小于size直接抛异常。。
凌乱。  Linklist  不能直接add(任意序号,object);    吗?
难道每次还得指定size?
新手求解啊

解决方案 »

  1.   

    这不源码写的很清楚,插入位置大于size时hrow new IndexOutOfBoundsException();
      

  2.   

    可是,我不能每次添加元素时候都去指定一下size吧。。
    每次 list.add(1,object);都会报错。(只要序号不是0都报下标越界)
      

  3.   

    你直接add(object)不行吗?为啥要指定序号
      

  4.   

    那为啥不实用Map
      

  5.   

    list的话要添加序号必须size已经达到了当前的序号,不然就会报错的
      

  6.   

    恩 不行的话只能用map了。
      

  7.   

    LinkedList不同于ArrayList,ArrayList申请的数组一般情况下是超过size的,而LinkedList是链式存储方式,不同于顺序存储。
    顺序存储是:我一次性能申请连续内存固定数目个(便于定位),你再多,我不能扩容,我是死的,只能再次申请一个大的。
    链式存储是:我每次插入一个值,就多申请一个,中间使用一个自引用的变量来记录下来相邻元素的顺序。
    想一想,如果链式存储允许一个非常大的下标插入,要申请多少个没有用的小链节来填补这个下标上的空缺呢?
    这一点上ArrayList也是同样的,有rangeCheckForAdd(int)方法的。
      

  8.   

    Java 集合 之 LinkedList http://www.verejava.com/?id=17159917711341