深入浅出!阿里P7架构师带你分析ArrayList集合源码,建议是先收藏再看! (3)

下面我们在看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核心知识点总结!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpysdz.html