
源码
java源码
iloveoverfly
年轻人不讲code德
展开
-
List列表集合,Iterator迭代器-Java8源码教会你正确的使用方式
ArrayList集合在java中,基于数组实现,get(i)查询操作时间复杂度为O(1)。add新增和remove操作存在潜在的昂贵时间花销。因为,对数组中某个位置的元素(非尾元素)进行add和remove操作,该元素后的所有元素会进行整体移动复制操作。当add操作时,添加元素的个数大于集合容量,arraylist会进行扩容处理,重新创建原始容量2倍大小的数组,然后进行数据复制操作。ar...原创 2020-02-18 23:10:36 · 452 阅读 · 0 评论 -
HashMap-Java8源码教会你正确的使用方式
HashMap在Java中,基于散列表(hash table)实现的。其特性如下:HashMap使用分离链接法存储节点hash冲突的元素,使用基于单链表Node和基于红黑树的TreeNode存两种方式储冲突的对象。 填充因子默认为0.75,当添加元素使填充因子大于loadFactor设置的值,则就HashMap就需要扩容,并且再散列。 被加载的对象在java中必须实现int hashCod...原创 2020-02-23 20:11:22 · 323 阅读 · 0 评论 -
TreeMap-Java8源码教会你正确的使用方式
TreeMap在java中,是基于红黑树的原理实现的(红黑树的原理请参考红黑树(red black tree)-分分钟钟被安排地明明白白),其原理是一棵有条件的平衡二叉查询树。节点定义包含了左右儿子节点,父节点,颜色标识。源码如下: /** * 红黑树节点 */ static final class Entry<K,V> implements M...原创 2020-02-23 14:32:14 · 224 阅读 · 0 评论