一个关于List的IndexOutOfBoundsException异常记录

简介: 一个关于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];
}

 

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


目录
相关文章
|
6月前
|
缓存 监控 Java
游戏服务器开服异常Check List
游戏服务器开服异常Check List
23 0
|
9月前
|
Java 数据格式 Spring
SpringBoot中@Value注解注入List或Map数据格式出现异常
在做一个小demo的时候、做的例子是我想在程序运行时将一些数据放入到配置类中的属性中、我想到可以通过yaml配置的数据映射到实体类中的属性中、我在想通过这种形式能不能映射。
|
SQL 关系型数据库 MySQL
解决Mysql5.7以上版本, 使用group by抛出Expression #1 of SELECT list is not in GROUP BY clause and contains no异常
解决Mysql5.7以上版本, 使用group by抛出Expression #1 of SELECT list is not in GROUP BY clause and contains no异常
101 0
避免list的并发修改异常的几种方式
避免list的并发修改异常的几种方式
有关使用Arrays.asList(array) 转换成List集合之后,对其进行操作抛出UnsupportedOperationException异常的问题
有关使用Arrays.asList(array) 转换成List集合之后,对其进行操作抛出UnsupportedOperationException异常的问题
83 0
JUC(二)JAVA线程池开启,等待全部执行完毕,配合计数器使用,List并发异常解决
JUC(二)JAVA线程池开启,等待全部执行完毕,配合计数器使用,List并发异常解决
JUC(二)JAVA线程池开启,等待全部执行完毕,配合计数器使用,List并发异常解决
|
安全 Java 流计算
【小家java】Java中集合List、Set、Map删除元素的方法大总结(避免ConcurrentModificationException异常)(下)
【小家java】Java中集合List、Set、Map删除元素的方法大总结(避免ConcurrentModificationException异常)(下)
【小家java】Java中集合List、Set、Map删除元素的方法大总结(避免ConcurrentModificationException异常)(下)
|
算法 Java 索引
【小家java】Java中集合List、Set、Map删除元素的方法大总结(避免ConcurrentModificationException异常)(上)
【小家java】Java中集合List、Set、Map删除元素的方法大总结(避免ConcurrentModificationException异常)(上)
|
jenkins Java 应用服务中间件
Jenkins部署异常: java.io.FileNotFoundException: http://ip:端口/manager/text/list
Jenkins部署异常: java.io.FileNotFoundException: http://ip:端口/manager/text/list
400 0
Jenkins部署异常: java.io.FileNotFoundException: http://ip:端口/manager/text/list
List中subList方法抛出异常java.util.ConcurrentModificationException原理分析
List中subList方法抛出异常java.util.ConcurrentModificationException原理分析
146 0
List中subList方法抛出异常java.util.ConcurrentModificationException原理分析