java集合存储结构特点,继承关系,存储过程
各类对比
集合类 | 存储结构 | 存储过程 | 特点 | 遍历 |
ArrayList | 数组 | 如果没有向集合中添加任何元素时,容量0,添加一个元素之后,容量10,每次扩容大小时原来的1.5倍。 | 有序 |
下标 迭代器 增强for |
Vector | 数组 | 有序、线程安全 | ||
LinkedList | 双向链表 | 添加新元素会创建一个Node,将其插入到双向链表中 | 删除、添加效率高、查找效率低 | |
HashSet | 数组+链表+红黑树 | 根据hashcode计算存储的位置,如果该位置为空,则直接保存,如果该位置不为空,执行equals方法,判断要存入的元素与本来存在的元素是否相等,若为true认为是重复,否则形成或插入链表 | 无序、不能重复、无下标 | |
TreeSet | 红黑树 |
就是TreeMap将value设置为null,值的集合 |
||
HashMap | 数组+链表+红黑树 |
(1)HashMap刚创建时,table是null,为了节省空间,当添加第一个元素时,table容量调整为16 (2)当元素个数大于阈值16*0.75=12时,会进行扩容,扩容后的大小为原来的2倍,目的是减少调整元素的个数 (3)jdk1.8当每个链表长度大于8,并且数组元素个数大于64时,会调整为红黑树,目的提高执行效率 (4)jdk1.8 当链表长度小于6时,调整成链表 (5)jdk1.8之前,链表是头插入,jdk1.8以后是尾查入 |
无序、无下标、键不可以重复,值可以重复 |
entrySet() keyset() 增强for |
TreeMap | 红黑树 |
基于排列顺序实现元素不重复 实现了SortedSet接口,对集合元素自动排序 元素对象的类型必须实现Comparable接口,指定排序规则 通过CompareTo方法确定是否为重复元素 |