集合
文章平均质量分 85
集合
历河川
一蓑烟雨任平生
展开
-
Java集合系列源码分析(七)--TreeMap
TreeMap是一个有序的集合,默认顺序从小到大,也可以根据自定义的顺序传入一个Comparator比较器进行排序,TreeMap底层使用的是红黑树,TreeMap不允许使用null作为key,但可以使用null作为value。原创 2022-10-15 00:56:30 · 403 阅读 · 0 评论 -
Java集合系列源码分析(六)--LinkedHashSet
LinkedHashSet继承了HashSet,在HashSet中有一个私有的构造方法用来创建LinkedHashMap,LinkedHashSet底层使用的则是LinkedHashMap,LinkedHashSet与HashSet并没有多大的区别,只是LinkedHashSet能使用双向链表保存元素插入顺序或元素访问顺序。原创 2022-10-05 11:30:45 · 345 阅读 · 0 评论 -
Java集合系列源码分析(五)--HashSet
HashSet底层是基于HashMap来实现的,是不允许有重复的元素的,如果添加相同的元素则会替换value,HashSet插入顺序是无序的,如果熟悉HashMap的代码再来看HashSet的代码则会很简单。原创 2022-10-05 11:09:37 · 189 阅读 · 0 评论 -
Java集合系列源码分析(四)--LinkedHashMap
LinkedHashMap继承自HashMap,LinkedHashMap中的多种操作都是基于HashMap的,跟HashMap不同的是,LinkedHashMap维护了一个Entry的双向链表,保证了Entry的插入顺序和访问顺序。原创 2022-10-04 23:18:44 · 821 阅读 · 0 评论 -
Java集合系列源码分析(三)--HashMap
HashMap以key-value的存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的 key、value 都可以为 null,key只能存在一个null,而value可以存在多个,此外,HashMap 中的映射不是有序的。jdk1.8以后HashMap底层的数据结构为数组+链表+红黑树,当数组中的数据存在hash冲突的时候则会将数组转换为链表,当链表的长度大于等于8的时候不会直接转换为红黑树原创 2022-10-04 12:29:58 · 191 阅读 · 0 评论 -
Java集合系列源码分析(二)--LinkedList
LinkedList基于双向链表来实现的,每个节点中都拥有上一个节点和下一个节点所在的指针位置,通过上一个节点和下一个节点的指针位置则能遍历双向链表,在对双向链表进行操作的时候只需要将操作的节点相关联的指针修改即可。LinkedList实现了Dueue接口,将LinkedList看成是一个双端队列,双端队列只能对头节点和尾节点操作。LinkedList与ArrayList不同,LinkedList不需要提前申请一大片连续的内存空间来存放数据,只要内存中任何地方存在剩余空间都可以存放数据原创 2022-10-03 16:13:58 · 161 阅读 · 0 评论 -
Java集合系列源码分析(一)--ArrayList
ArrayList继承于AbstractList,实现了List接口,是一个长度可变的集合,提供了增删改查的功能。ArrayList实现了RandomAccess接口,可以对元素进行快速访问。ArrayList实现了Serializable接口,可以对ArrayList进行序列化。ArrayList 实现了Cloneable接口,即覆盖了函数clone(),能被克隆。ArrayList底层是通过数组来实现的,当向数组中添加元素时,数组的容量大小不足则会扩容。原创 2022-10-01 23:40:49 · 185 阅读 · 0 评论