![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【集合】
文章平均质量分 75
Zero 、
这个作者很懒,什么都没留下…
展开
-
【集合】TreeSet
TreeSetNavigableSet 定义了一些有方向的操作数据结构private transient NavigableMap<E,Object> m;// Dummy value to associate with an Object in the backing Mapprivate static final Object PRESENT = new Object();构造方法TreeSet(NavigableMap<E,Object> m) {原创 2021-05-13 14:06:32 · 101 阅读 · 0 评论 -
【集合】HashSet
HashSetHashSet ,基于 HashMap 的 Set 实现类。数据结构// HashSet 只有一个属性,那就是 mapprivate transient HashMap<E, Object> map;// 因为 HashSet 没有 value 的需要,所以使用一个统一的 PRESENT 即可private static final Object PRESENT = new Object();构造方法public HashSet() { map =原创 2021-05-13 14:04:26 · 47 阅读 · 0 评论 -
【集合】TreeMap
TreeMap小结TreeMap 按照 key 的顺序的 Map 实现类,底层采用红黑树来实现存储。TreeMap 因为采用树结构,所以无需初始考虑像 HashMap 考虑容量问题,也不存在扩容问题。TreeMap 的 key 不允许为空( null ),可能是因为红黑树是一颗二叉查找树,需要对 key 进行排序。TreeMap 的查找、添加、删除 key-value 键值对的平均时间复杂度为 O(logN) 。原因是,TreeMap 采用红黑树,操作都需要经过二分查找,而二分查找的时间复杂度是原创 2021-05-13 11:10:06 · 335 阅读 · 0 评论 -
【集合】LinkedHashMap
LinkedHashMapLinkedHashMap 继承自 HashMap 类,基本上没有重写 HashMap 的方法,只是把 HashMap 空实现的预留拓展点实现了。数据结构Map 拓展属性/** * 头节点。 * * 越老的节点,放在越前面。所以头节点,指向链表的开头 */transient LinkedHashMap.Entry<K,V> head;/** * 尾节点 * * 越新的节点,放在越后面。所以尾节点,指向链表的结尾 */transi原创 2021-05-13 10:33:27 · 284 阅读 · 0 评论 -
【集合】HashMap
HashMap概述HashMap的底层实现原理?以jdk7为例说明:HashMap map = new HashMap( ):在实例化以后,底层创建了长度是16的一维数组Entry[ ] table。…可能已经执行过多次put. . .map.put( key1, vaLue1 );首先,调用key1所在类的hashCode()计算key1哈希值,此哈希值经过某种算法计算以后,得到在Entry数组中的存放位置。如果此位置上的数据为空,此时的key1-value1添加成功。----情况1原创 2021-05-13 09:57:25 · 62 阅读 · 0 评论 -
【集合】LinkedList
LinkedListjava.util.Deque 接口,提供双端队列的功能,LinkedList 支持快速的在头尾添加元素和读取元素,所以很容易实现该特性。继承了 java.util.AbstractSequentialList 抽象类,它是 AbstractList 的子类,实现了只能连续访问“数据存储”,基于迭代器顺序遍历后,从而实现后续的操作。例如 #get(int index)、#add(int index, E element) 等等随机操作的方法。数据结构// 链表大小原创 2021-05-11 23:54:12 · 76 阅读 · 0 评论 -
【集合】ArrayList源码(jdk8)
ArrrayList(jdk8)java.util.RandomAccess 接口,表示 ArrayList 支持快速的随机访问特点容量不固定,想放多少放多少(有最大阈值,但一般达不到)有序的(元素输出顺序与输入顺序一致)元素可以为 null效率高size(), isEmpty(), get(), set() iterator(), ListIterator() 方法的时间复杂度都是 O(1)add() 添加操作的时间复杂度平均为 O(n)其他所有操作的时间复杂度几乎都是 O(n)原创 2021-05-11 21:12:04 · 46 阅读 · 0 评论