(1)collection
- set (只能迭代,不可以按下标取值)
hashset、Treeset
- list(可以迭代,也可以按下标取值)
ArrayList、LinkedList、Vector
特点:
ArrayList:方便随机访问,由数组实现的。所以中间插入和删除速度较慢;
LinkedList:方便插入,删除;对顺序进行了优化,方便中间插入、删除。 还有具体方法: addFirst(),addLast(),removeFirst(),removeLast(),可以当做堆栈、队列、和双向队列;
ArrayList继承关系:

LinkedList继承关系

(2)Map
HashMap、HashTable、TreeMap
优点
HashMap:方便查询设计;
TreeSet:保存次序的Set,底层为树结构,可以获取有序的序列;
HashMap继承关系:

TreeMap继承关系

(3)容器对比
- set与list
set:检索元素效率低下,删除和插入效率高,删除和插入不会引起其他元素位置改变;
list:和数组类似,List可以动态增长,查找元素效率高,插入和删除效率低,因为会引起其他元素位置改变。
- HashMap与HashTable
HashMap:是线程不安全的, HashTable:是线程安全的;
HashMap:中允许键和值为null, HashTable:不允许;
HashMap:的默认容器是16,为2倍扩容,HashTable: 默认是11,为2倍+1扩容;