
ArrayList源码解读(全是细节)
Catty_Cat
怎么做?
为什么这么做?
还能怎么做?
展开
-
ArrayList常见和不常见面试题
ArrayList插入删除一定慢么? 取决于你删除的元素离数组末端有多远,ArrayList拿来作为堆栈来用还是挺合适的,push和pop操作完全不涉及数据移动操作。ArrayList的遍历和LinkedList遍历性能比较如何? 论遍历ArrayList要比LinkedList快得多,ArrayList遍历最大的优势在于内存的连续性,CPU的内部缓存结构会缓存连续的内存片段,可以大幅降低读取内存的性能开销。ArrayList是如何扩容的? ArrayList扩容后的大小等于扩容前大小的1.5倍,原创 2020-08-24 21:56:39 · 560 阅读 · 0 评论 -
LinkedList源码分析
LinkedList图解package java.util;import java.util.function.Consumer;/** * LinkedList底层使用一个Node数据结构,有前后两个指针,双向链表实现的。相对数组,链表插入效率较高,只需要更改前后两个指针即可; * 另外链表不存在扩容问题,因为链表不要求存储空间连续,每次插入数据都只是改变last指针;另外,链表所需要的内存比数组要多, * 因为他要维护前后两个指针;它适合删除,插入较多的场景。另外,LinkedList原创 2020-08-18 20:40:43 · 185 阅读 · 0 评论 -
ArrayList源码解读,全是细节
ArrayList简介: 1.是一种变长的集合类,基于定长数组实现。 2.允许空值和重复元素,当往 ArrayList 中添加的元素数量大于其底层数组容量时,其会通过扩容机制重新生成一个更大的数组。 3.底层基于数组实现,所以其可以保证在 O(1) 复杂度下完成随机查找操作。 4.是非线程安全类,并发环境下,多个线程同时操作 ArrayList,会引发不可预知的异常或错误。话不多说直接上源码 各参数、各方法、及其实现原理均已注释。package java.util;import java.原创 2020-08-17 17:47:27 · 169 阅读 · 0 评论