讲讲ArrayList的扩容和什么是溢出感知代码
ArrayList 的扩容分为主动扩容和自动扩容两种。主动扩容就是通过调用 ArrayList 提供的 ensureCapacity() 方法来主动增加 ArrayList 实例的容量。自动扩容就是向 ArrayList 实例添加元素时,如果容量不够,ArrayList 自动扩容的过程。 无论是主动扩容还是自动扩容,最终都是通过 grow() 方法来完成扩容,我们首先来看一下 grow() 方法。 一、扩容方法 grow() grow(int minCapacity) 方法实现的功能用一句话概括就是,如果 minCapacity 小于等于原数组的 1.5 倍,则扩容至原数组的 1.5 倍,如果 minCapacity 大于原数组的 1.5 倍,则扩容至 minCapacity。 请看源码: private void grow ( int minCapacity ) { // overflow-conscious code int oldCapacity = elementData . length ; int newCapacity = oldCapacity + ( oldCapacity >> 1 ) ; // newCapacity 是 oldCapacity 的 1.5 倍 if ( newCapacity - minCapacity < 0 ) newCapacity =