下面我们在看fastRemove方法,fastRemove方法相较于remove(int index)方法少了一步对index的判断,因为remove(Object o)就是在数组中进行查询一定是合法的,所以在fastRemove中没必要对index进行判断。
private void fastRemove(int index) { modCount++; int numMoved = size - index - 1; if (numMoved > 0) System.arraycopy(elementData, index+1, elementData, index,numMoved); elementData[--size] = null; // clear to let GC do its work } get方法 public E get(int index) { // 检查index是否合法,是否越界 rangeCheck(index); // 利用数组的特点,直接访问数组中该索引位置上的元素 return elementData(index); } 总结ArrayList可以存放null。
ArrayList本质上就是一个elementData数组。
ArrayList区别于数组的地方在于能够自动扩展大小,其中关键的方法就是gorw()方法。
ArrayList中removeAll(collection c)和clear()的区别就是removeAll可以删除批量指定的元素,而clear是全是删除集合中的元素。
ArrayList由于本质是数组,所以它在数据的查询方面会很快,而在插入删除这些方面,性能下降很多,有移动很多数据才能达到应有的效果
ArrayList实现了RandomAccess,所以在遍历它的时候推荐使用for循环。
最后欢迎关注公众号:前程有光,领取一线大厂Java面试题总结+各知识点学习思维导+一份300页pdf文档的Java核心知识点总结!