Java集合类框架图
区别:
Collection:每个位置对应一个元素
--List:存放有序,允许重复元素,允许元素为null
--ArrayList:
内部结构是数组;
初始容量是10;
存放有序,元素可以重复也可以为null;
插入和删除的移动速度慢;动态扩容1.5倍;
线程不安全;
--LinkedList:
内部结构是双向链表;
元素存放有序,允许元素为null,可重复;
线程不安全;
--Vector :
内部结构是数组,与ArrayList及其相似;
初始容量是10;
线程安全;
动态扩容为原来的两倍;
--Set:不允许重复元素
--HashSet:
底层实现是HashMap(),所以不允许重复元素(对应的是key);
存放无序(根据hash确定索引位置);
允许元素为null;
--LinkedHashSet:
继承HashSet,跟HashSet类似,唯一区别:存放元素有序;
遍历性能比HashSet好,但插入删除的性能会差点;
允许元素为null;
--TreeSet:
是SortedSet接口的唯一实现类;
不允许元素重复, 不允许元素为null;
自动排序元素;
Map:以Key-Value键值对存在
--HashMap:
数据结构是数据和链表实现的。Entry[] table,链表存储来解决hash冲突;
初始容量:16;
允许key和value为null,key重复会覆盖;
存放无序;线程不安全;
--LinkedHashMap:
数据结构是双向链表;
存放元素有序;
线程不安全
--TreeMap:
不允许Key为null, value可以为null;
元素默认排序(如:字符串->字典);
线程不安全