1.Collection接口
List(序列),继承自Collection,元素有序,并且可重复;
ArrayList——动态数组,查找速度快,批量增删慢;
查询快的原因是:直接通过下标找到对应的元素,查找10个元素,只需要1次
LinkedList -- 双向链表;批量增删快,查找慢;
查询慢的原因是:链表,就必须一个接着个的往下找。比如查找第十个元素,就要查找10次才能找到元素。
Vector -- 线程安全的动态数组;
Set(集),继承自Collection, 元素无序,并且不可以重复;
HashSet——哈希集,是由 HashMap 实现的。通过一个HashMap存储元素,元素是存放在HashMap的Key中,而Value统一使用一个Object对象。
LinkedHashSet -- 其底层是基于LinkedHashMap来实现的,有序,继承自HashSet。
Map提供了一种映射关系,元素是以键值对(key-value)的形式存储的;
HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现;它保留插入的顺序,如果需要输出的顺序和输入时的相同
SortMap ,是根据其键的自然顺序进行排序
TreeMap, 实现SortMap接口,底层采用 “红黑树”算法实现、
HashMap 与 Hashtable 与 LinkedHashMap 与 TreeMap 的区别 :
HashMap : 允许有一条记录 键值为NULL,允许多条记录的值为Null,不支持线程的同步;多线程下,可能导致数据不一致。如需同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力.
Hashtable : 它不允许记录的键或者值为NULL;它支持线程的同步,任一时刻只有一个线程能写Hashtable,所以比HashMap慢。
LinkedHashMap : 保存了记录的插入顺序。它继承于HashMap、底层使用哈希表与双向链表来保存所有元素
TreeMap实现SortMap接口,内部实现是红黑树。
2.队列 和 堆栈
队列和堆栈有些相似,队列(双向链表)是先进先出,堆栈(单向链表)是后进先出。