首页 > 试题广场 >

ArrayList是否会越界?

[问答题]
ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于链表的数据结构2. 对于随机访问get和set,ArrayList要优于LinkedList,因为LinkedList要移动指针;ArrayList并发add()可能出现数组下标越界异常。
发表于 2019-05-05 15:10:34 回复(0)
更多回答
可能会越界,在多线程操作同一个ArrayList的时候,两个线程同时执行Add在线程1已经将size++而线程二在读取的时候导致越界 线程在被挂起的时候,执行的位置不一样 Size是个共有变量 自增是个非原子操作
发表于 2019-04-04 09:23:18 回复(0)
public boolean add(E e) {
    ensureCapacityInternal(size + 1); // Increments modCount!!  //这一句代码会出现问题,欧并发的情况下,可能会有多个线程通过了 第一句的检查,如果恰好还剩一个位置,那么就会出现越界的现象。 elementData[size++] = e;  return true; }

发表于 2020-03-19 17:28:48 回复(0)
会的,底层是数组实现,是数组就一定会有越界的问题存在。
发表于 2019-01-20 22:27:19 回复(0)

众所周知,Java中的arraylist的大小是随着我们添加的元素多少而变化的,于是我们习惯性的以为arraylist就是无限大的,其实不然,arraylist也是有边界的。

当我们调用arraylist.add(object temp)的时候是不会出现数组越界的问题的,但是我们调用arraylist.add(int index, object temp)的时候,就有可能出现数组越界。

如果我们初始化arraylist后,没有add元素就要按照索引插入元素,那么此时就会爆出数组越界的问题。因为此时arraylist还没有给你索引的地方分配空间。

发表于 2020-12-14 16:43:01 回复(0)
会,ArrayList是实现了基于动态数组的数据结构,是数组就一定会有越界的问题存在。
发表于 2019-05-02 21:46:08 回复(0)
发表于 2019-04-29 18:14:02 回复(0)
当list添加大于10时 会出现数组越界的异常
发表于 2019-04-28 23:10:59 回复(0)
会,ArrayList是实现了基于动态数组的数据结构
编辑于 2019-04-28 23:21:44 回复(0)
ArrayList并发add()可能出现数组下标越界异常。
发表于 2019-04-27 13:37:41 回复(0)
可能会的,arraylist是基于动态数组
发表于 2019-04-26 22:58:21 回复(0)