通过前面ArrayList的源码我们来解决一些ArrayList的面试题。牵扯到的点是ArrayList的效率和扩容问题。

ArrayList的默认容量大小是多少?

在jdk1.8中ArrayList new的容量大小是{}即0,在第一次添加数据时会设置为10。后续扩容会增加到1.5倍数。

ArrayList的复制方法有哪些?

  • 使用clone()方法
  • 使用ArrayList构造方法
  • 使用addAll方法

ArrayList插入或删除元素一定比LinkedList慢么

ArrayList底层是数组,LinkedList底层是双向链表。

ArrayList新增元素的时候需要扩容,即使用Arrays.copyOf方法,而LinkedList不需要这些操作,所以,ArrayList插入或删除元素是比LinkedList慢的。

不过对于下标查询数组元素,ArrayList会更快些。

ArrayList适合做队列吗?

队列是先进先出FIFO,需要在首部添加尾部删除元素。对于ArrayList 这些操作会涉及到数组的拷贝,效率较低,不适合做队列