zoukankan      html  css  js  c++  java
  • 一个关于List的IndexOutOfBoundsException异常记录

    下面的代码是一个关于List的经典问题,平常工作中,我们对空指针会比较警惕,稍不留意可能就会写出来下面的问题代码。

    List<Integer> list = new ArrayList<>();
    Integer a = list.get(0);

    上面的代码运行之后会报下面的数组越界的异常

    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    main
    	at java.util.ArrayList.rangeCheck(ArrayList.java:653)
    	at java.util.ArrayList.get(ArrayList.java:429)
    	at com.lingyejun.dating.chap11.thread.MyDemo3.main(MyDemo3.java:17)
    

    根本原因在于new ArrayList<>()的时候创建出来的是一个不包含任何内容的空数组,此时的数组size是0,然后list.get(0)操作时,index>=size,所以就出现了数组越界的异常,在这里小记一下。

    拷贝了一部分的源码如下: 

    private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
        
    public ArrayList() {
        this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
    }
        
    public E get(int index) {
        rangeCheck(index);
    
        return elementData(index);
    }
    
    private void rangeCheck(int index) {
        if (index >= size)
            throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
    }
    
    E elementData(int index) {
        return (E) elementData[index];
    }
    

    本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。

  • 相关阅读:
    HDU 1284 思维上的水题
    Buy Tickets POJ
    K-th Number Poj
    主席树入门+博客推荐
    Greg and Array CodeForces 296C 差分数组
    三连击 P1008 洛谷 python写法
    Lost Cows POJ 2182 思维+巧法
    Bash and a Tough Math Puzzle CodeForces 914D 线段树+gcd数论
    Can you answer these queries? HDU 4027 线段树
    敌兵布阵 HDU 1166 线段树
  • 原文地址:https://www.cnblogs.com/lingyejun/p/13727196.html
Copyright © 2011-2022 走看看