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的子类,使用了双重链表,保证了数据的有序

posted @ 2019-06-25 18:07  温碧泉  阅读(274)  评论(0编辑  收藏  举报