![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java集合框架
文章平均质量分 72
Rhenic
Java学习者
展开
-
4、迭代器 Iterator
4、迭代器 Iterator4.1 迭代器 Iterator是什么?迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。4.2、Iterator 怎么使用?有什么特点?Java中的Iterator功能比较简单,并且只能单向移动:(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方原创 2022-05-07 09:08:52 · 56 阅读 · 0 评论 -
3、Set(唯一值)(HashSet、TreeSet)
3、Set(唯一值)3.1、HashSet 的实现原理存储结构:哈希表(数组+链表+红黑树)HashSet 基于 HashMap 实现,使用了 HashMap 的 K 作为元素存储,V 为 new Object() ,在 add() 方法中如果两个元素的 Hash 值相同,则通过 equals 方法比较是否相等。LinkedHashSet LinkedHashSet 继承于 HashSet,并且其内部是通过 LinkedHashMap 来实现的。TreeSet 红黑树实现有序唯一。3.1.1原创 2022-05-07 09:08:34 · 162 阅读 · 0 评论 -
2、Map(HashTable、LinkedHashMap、HashMap、TreeMap、ConcurrentHashMap)
2、Map(K-V 对)2.1、概述a、HashMap( HashMap 的实现原理?)底层数据结构,JDK 1.8 是数组 + 链表 + 红黑树,JDK 1.7 无红黑树。链表长度大于 8 时,转化为红黑树,优化查询效率。初始容量为 16,通过 tableSizeFor 保证容量为 2 的幂次方。寻址方式,高位异或,(n-1)&h 取模,优化速度。扩容机制,当元素数量大于容量 x 负载因子 0.75 时,容量扩大为原来的 2 倍,新建一个数组,然后转移到新数组。b、基于 Ma原创 2022-05-07 09:08:13 · 285 阅读 · 0 评论 -
1、List(ArrayList、Vector、LinkedList)
1、List(线性结构)ArrayList Object[] 数组实现,默认大小为 10 ,支持随机访问,连续内存空间,插入末尾时间复杂度 o(1),插入第 i 个位置时间复杂度 o(n - i)。扩容,大小变为 1.5 倍,Arrays.copyOf(底层 System.ArrayCopy),复制到新数组,指针指向新数组。Vector 类似 ArrayList,线程安全,扩容默认增长为原来的 2 倍,还可以指定增长空间长度。LinkedList 基于链表实现,1.7 为双向链表,1.6 为双原创 2022-05-07 09:07:53 · 76 阅读 · 0 评论