java常见集合笔记
集合的分类:
List集合:有序、可重复、可为空
ArrayList:基于数组实现,线程不安全,不适和频繁插入、修改 、删除,存储后遍历效率高
Vecotr:基于数组实现,同步(线程安全),不适和频繁插入、修改 、删除
LinkList:基于链表,采用双向链表结构,线程不安全,适合频繁插入、修改、删除
Set集合:无序、不可重复
HashSet:基于哈希表(HashMap)、不允许重复、可以有一个NULL元素、不保证数据恒久不变
添加元素时把元素作为HashMap的key,HashMap的value使用一个固定的Object对象,无序
TreeSet:基于TreeMap(二叉树数据结构),对象需要比较大小,通过对象比较器来实现,
对象比较器还可以去除重复,如果自定义的数据类没有实现比较器接口将无法添加到集合,排序
LinkHashSet:基于链表和哈希表,有序
Map集合:
HashMap:线程不安全,key和value允许为空(底层原理见 https://www.cnblogs.com/wenbiquan/p/11061194.html),HashMap中hash数组的默认大小是16,而且一定是2的指数。
HashTable:基于哈希表(链表+数组)key和value不能为空,线程安全, HashTable中hash数组默认大小是11,增加的方式是 old*2+1
LinkHashMap:HashMap的子类,使用了双重链表,保证了数据的有序