Java集合框架
2021-09-17 00:11:35 7 举报
AI智能生成
登录查看完整内容
Java集合框架,如有错误请指正
作者其他创作
大纲/内容
查询快,增删慢
底层实现:数组
非线程安全
扩容:初始化为0,第一次10,之后1.5倍
ArrayList
底层实现:双向链表
LinkedList
多线程
线程安全,方法由synchronized修饰
扩容机制:初始化为10,之后2倍
先进后出FILO
继承自Vector,底层实现一致
Stack
Vector
List
底层实现:HashMap,key为set的元素,value为空的object对象
可以存放一个Null值
底层实现LinkedHashMap
HashSet的子类
数组+双向链表
LinkedHashSet
HashSet
底层实现TreeMap
TreeSet
Set
Collection
有序集合、有索引元素可以重复遍历方式三种 迭代器 普通for 增强for
无序、没有索引不存储相同元素遍历方式 使用迭代器、使用增强for循环底层判重机制 先判断hashCode然后判断equals
JDK1.7 数组+链表
JDK1.8 数组+链表+红黑树
底层实现
第一次添加:哈希桶初始化为16,负载因子默认值为0.75之后添加:哈希桶每次2倍扩容
当一个桶中的元素>8并且哈希桶桶的个数>=64
什么时候链表会变成红黑树
当红黑树中的节点<=6时会转换成链表
扩容时和移除节点时会检测是否需要转换
什么时候红黑树会变成链表
扩容机制
JDK8-在多线程的情况下,红黑树的节点r=r.parent.parent所以查找根节点死循环
JDK7-多线程情况下,两个HashMap扩容最后会导致链成循环的,造成死循环
hashMap的死循环问题
HashMap+LinkedList
哈希+双向链表
底层结构
集合有序
LinkedHashMap
HashMap
有序集合,通过红黑树实现
key必须实现comparable接口,否则会抛出异常
TreeMap
数组+链表
通过方法上添加synchronized实现
线程安全
初始化容量为11
之后每次table扩容为原来的2n+1
经常读取配置文件等
Properties
HashTable
Map
Java集合框架
无序存储双列元素,key-valuekey不允许重复,可以为null,只有一个一对key-value存储在一个node中Node实现了Entry接口,一对key-value也是一个entry
0 条评论
回复 删除
下一页