结构图:
collection:集合的顶层接口,不能被实例化;
list: 列表容器,有序,可重复;
set: 集合容器,无序,唯一;
map:图容器 ,key-value存储数据;
arraylist: 数组列表,线程不安全,初始化设置指定长度(默认为10),自动扩容(50%)
vector: 同步数组,线程安全,初始化指定长度,自动扩容(100%)
linkedlist:链表: 链式结构;
!数组结构查询效率低,链表结构插入删除效率高;因为数组插入删除需要该元素后面的所有元素都要移动
hashset:哈希集合,基于hashmap实现,集合元素可以为null;通过元素的equals和hashcode方法来判断元素重复
treeset: 树集合,基于treemap实现,有序(自然排序和定制排序),compareTo方法排序,通过元素的equals和hashcode方法来判断元素重复
linkedhashset: 链式哈希集合,基于linkehashmap实现,有序(添加顺序),继承hashset
!集合扩容机制同map
hashmap: 哈希图,数组+链表结构,元素可为null,数组初始大小为16,负载因子3/4,最大长度2^30,扩容时将旧数据取出放到新的hashmap中,并且新的位置为原位置或原位置+扩容大小
,扩容(100%),当元素哈希冲突(哈希值相等)时在该数组点延申链表,jdk1.8中当哈希冲突到达8链表转换为红黑树,jdk1.8由头插法改成尾插法防止多线程导致死循环
hashtable: 同步哈希表,同步的hashmap,默认大小为11,扩容(100%)
treemap: 树图,以红黑树结构,排序
linkehashmap: 链式哈希图,数组+链表(+红黑树)+双向链表,有序
!hashmap大小为2的幂次方,因为在hashmap中定位是hashcode&(length-1)计算 length为2的幂次方 那么 length-1的二进制数为11111……
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架