java容器分为两大部分:Collection和Map。Collection是单个元素的集合,又可以分为List、Queue和Set。Map用来存储一组键值对,又可以分为HashMap和TreeMap。
List的特点就是所有的元素是可以重复的。
ArrayList是一个可以动态增长的数组, ArrayList由于底层是使用数组实现的,所以随机访问速度快,插入删除较慢。
LinkedList是使用链表实现的,在列表中插入和删除速度快,但是查找需要遍历整个链表,速度较慢。使用LinkedList可以实现很多队列、栈的数据结构
Vector是一个已经被弃用的类,因为他是线程同步的,而我们平时使用的时候都是非同步的,使用同步的坏处就是会在一个记录上加锁,防止多个程序访问同一条数据导致数据不同步。这样会导致访问速度变慢。
队列是一个满足“先进先出”的数据结构。
LinkedList提供了方法支持队列操作,并且实现了Queue接口,所以LinkedList是队列的一种实现,可以通过LinkedList向上转型为Queue
PriorityQueue是优先级队列。
集合中的元素不可以重复。
HashSet底层是使用散列函数,在查询的方面有优化
TreeSet底层使用的是红黑树
Map是使用键值对存储的一种结构,所以在处理列如单词统计等方面是杀手锏
HashMap更适合查找、删除、插入
TreeMap更适合遍历