通俗易懂的类集复习框架!看着框架理解类集更有效率!!!
自己整理的有关于类集上的知识点框架,都是大概的轮廓,可以照着轮廓去理解各个接口及方法,类集部分接口真的是神多!!
主要是按照Collection接口下的各个子接口来引入和理解~
下面是一些知识点小记:
ArrayList、Vector、LinkedList的区别
1.ArrayList、Vector的区别:
1).出现版本:
ArrayList JDK1.2
Vector JDK1.0 (出现在List、Collection接口之前)
2).初始化策略区别
Vector在无参构造执行后将对象数组大小初始化为10
ArrayList采用懒加载策略,在构造方法阶段不初始化对象数组,在第一次添加元素是才初始化对象数组大小为10
3).扩容策略
ArrayList扩容时,新数组大小变为原数组的1.5倍,
Vector扩容时,新数组大小变为原数组的2倍
4).线程安全性:
ArrayList采用异步处理,线程不安全,效率较高
Vector采用在方法上加锁,线程安全,效率较低(即便要使用线程安全的List,也不用Vector)
5).遍历:
Verctor支持较老的迭代器Enumeration,
ArrayList不支持
2.ArrayList和Vector的相同点
底层均使用数组实现
3.ArrayList、LinkedList的不同点
LinkedList底层采用双向链表实现,ArrayList底层采用数组实现
HashSet与HashMap
HashSet(无序存储) – HashMap
1、底层使用哈希表+红黑树
2、允许存放null,无序存储
TreeSet(有序存储)Comparable、comparator – TreeMap
1.底层使用红黑树
2.不允许出现空值,有序存储
3.自定义类要想保存到TreeSet中,要么实现Comparable接口,要么向TreeSet传入比较器(Compartor接口)
Comparable接口与Comparator接口
1.Comparable是排序接口,若一个类实现了Comparable接口,意味着该类支持排序,是一个内部比较器(自己去和别人比)
2.Comparator接口是比较器接口,类本身不支持排序,专门有若干个第三方的比较(实现了Comparator接口的类)来进行类的排序,是一个外部比较器(策略模式)