集合容器

Collection和Map

Collection集合存储的是一组对象,储存的是单列数据

Map集合储存的key-value键值对数据,可以通过key定位到value,通过hashcode和equals方法保证键不重复

Collection接口主要有List接口和Set接口

List接口有序的储存数据,可以储存重复的数据,允许null值

Set接口无序的储存数据,不允许重复的数据,只允许一个null值

List接口主要有ArrayList,Vector,LinkedList实现类

ArrayList底层是可变数据Object[],默认大小为0,执行add方法时赋初始值10,每次扩容增加0.5倍,是线程不安全的集合,随机访问效率高,修改涉及到数据的移动效率低

Vector类似ArrayList,add方法用synchronized修饰,是线程安全的集合,但是开销大

LinkedList底层是双向链表结构,内部存储的Node节点,每个节点储存着前一个节点和后一个节点还有自身的地址,修改数据时只需要修改内部的指针指向,查找数据时要从第一个节点或最后一个

节点开始向后或者向前遍历,所以修改效率高,非头尾数据的查找效率低

Set接口主要有HashSet和TreeSet实现类

HashSet是根据哈希表实现的,不保证存储顺序,只允许一个null值

TreeSet是基于二叉树实现的,保证存储数据处于排序状态,不允许null值

Map接口主要HashMap,HashTable和TreeMap实现类

HashMap继承自AbstractMap,基于哈希表实现,底层通过数组加链表实现,数组初始容量16,扩容时直接是2倍,非线程安全,允许null键和null值,不保证数据顺序

HashTable继承自Dictionary,基于哈希表实现,底层通过数据加链表实现,数组初始容量11,扩容时直接是2倍+1,线程安全,不允许null键,不保证数据顺序

TreeMap继承自AbstractMap,基于红黑树实现,非线程安全,不允许null键,存入TreeMap的元素应该实现Comparable接口或者实现Comparator接口来保证顺序存储数据

猜你喜欢

转载自www.cnblogs.com/nanbcdx/p/11686454.html