源码分析
文章平均质量分 59
dengmsjava
这个作者很懒,什么都没留下…
展开
-
【Java】HashSet和TreeSet去重机制对比
HashSet和TreeSet去重机制对比(1)HashSet的去重机制:hashCode( )+equals( ),底层先通过存入对象进行运算得到一个hash值,通过hash值得到对应的索引,如果发现table索引所在位置没有数据,就直接存放;如果有数据,就进行equals遍历比较,比较后,不相同就加入,否则就不加入。(2)TreeSet的去重机制:如果传入了一个Comparator匿名内部类,就用实现的compare去重,如果方法返回0,就认为是相同的元素/数据,就不添加;如果没有传入一个Compa原创 2022-03-26 16:30:28 · 709 阅读 · 0 评论 -
【Java】HashSet底层机制及源码分析
(1)HashSer底层是HashMap,HashMap底层是数组+链表+红黑树;(2)添加一个元素时,先得到hash值(会转成索引值),找到存储数据表table,判断这个索引位置是否已经存放元素,如果没有存放,则直接加入;如果有,则调用equals比较,如果相同,就放弃添加,如果不相同,则添加到链表最后;(3)在JDk 8中,如果一条链表的元素个数到达TREEIFY_THRESHOLD(默认是8),并且table的大小≥MIN_TREEIFY_CAPACITY(默认64),就会进行树化(红黑树)。原创 2022-03-19 18:43:12 · 875 阅读 · 0 评论 -
【Java】LinkedList增删机制和源码分析
LinkedList增删机制和源码分析LinkedList底层实现了双向链表和双端队列特点。两个属性first和last分别指向首结点和尾结点,每个结点(Node对象)里面又维护了pre、item、next三个属性,其中通过pre指向前一个,通过next指向后一个结点,最终实现双向链表。原创 2022-03-18 20:07:07 · 382 阅读 · 0 评论 -
【Java】Vector核心扩容机制和源码分析
Vector核心扩容机制和源码分析当创建Vector对象时,不管使用的是无参构造器还是有参构造器,扩容为上一次elementData容量的2倍。原创 2022-03-14 20:55:36 · 920 阅读 · 0 评论 -
【Java】 ArrayList核心扩容机制和源码分析
ArrayList核心扩容机制和源码分析(1)当创建ArrayList对象时,若使用的是无参构造器,则初始elementData容量为0,第一次添加,则扩容elementData容量为10,如需再次扩容,则扩容elementData容量为上一次容量的1.5倍。(2)当创建ArrayList对象时,若使用的是有参构造器,则初始elementData容量为(int)中指定大小,如需扩容,则直接扩容为上一次elementData容量的1.5倍。原创 2022-03-14 10:57:45 · 748 阅读 · 0 评论