集合类关系继承图:
SortedSet:虽然无序不可重复,但是放在该集合的元素自动按照大小排序
Hashtable底层式哈希表数据结构,所有方法带有synchronized关键字,因此线程安全,但效率低
Hashtable的key和value不允许null
集合初始化容量为11
自动扩为机制:新容量大小=原容量大小*2+1
SortedMap的key存储元素的特点:
无序不可重复,放在SortesMap集合key部分元素会自动按照大小进行排序
集合都可使用迭代器遍历Iterator
List集合存储特点,有序可重复,有下标:
1.ArrayList:
底层采用数组的数据结构
初始化容量为10,类型为Object,自动扩容:1.5倍
非线程安全
优点:检索效率高
缺点:增删效率低,但是朝末尾增删效率高
2.LinkedList:
底层采用双向链表的数据结构
在空间上元素存储不连续的
优点:增删效率高
缺点:检索效率低,每次检索都从头节点开始
3.Vector:
底层采用数组数据结构
线程安全,因为每个方法都有synchronized关键字,故此效率低,已经淘汰
Set集合存储特点,无序不可重复
1.HashSet:
newHashMap集合时,底层实际new了一个HashMap集合,数据其实存储在HashMap的key部分,HashMap是哈希表数据结构,初始容量为16,建议初始化容量大小为2的倍数,自动扩容机制会以两倍大小扩容,newHashMap需要重写equals和Hashcode
2.TreeSet:
底层为TreeMap,将数据放入TreeSet时,实际上是放到TreeMap中,TreeMap底层采用二叉树数据结构
关于TreeSet的排序:
三种方法:
1.类继承Comparable接口,重写compareTo方法
2.新建一个比较器继承Comparator接口,重写compare方法,将比较器传入对象集合
3.比较器在传入时写成内部类(下图没有写)
以上方法自动去重
Map集合:
Collection和Map没有关系
Map以键值对的方式存储元素
所有Map集合key的特点:无序不可重复
1.HashMap:
底层是哈希表数据结构,非线性安全的
JDK8以后,哈希单向链表中元素超过8个,单向链表回变成红黑树数据结构,红黑树节点小于6个,回重新变为单向链表
初始化默认容量为16,默认加载因子为0.75,自动扩容为原来的两倍
HashMap集合的key和value允许null
2.Properties:
Properties是线程安全的
采用key-value方式存储元素,key与value都只支持String类型
Properties被称为属性类
3.TreeMap:
底层数据结构是一个二叉树