一.介绍集合框架
Collection接口:
List接口:有序可重复
ArrayList: 底层是数组 transient Object[],查快,增删慢。
LinkedList:底层是链表 Node<E>,查慢,增删快。
Vector:底层Object数组,ArrayList的同步版,线程安全效率低。
Stack 栈是其子类,后进先出。 push、pop、peek
Set接口:无序不可重复
HashSet和TreeSet:底层是对应Map实现的,value是固定的一个Object对象,利用Map的key实现不可重复。
Queue接口:队列,先进先出。在BSF(广度优先搜索)算法中经常用到。
添加元素: add offer put 如果队列满了:抛异常、boolean、阻塞
返回队列头部的元素并移除: remove poll take 如果队列为空:抛异常、null、阻塞
返回队列头部的元素: element peek 如果队列为空:抛异常、null
Map接口:
HashMap:数组+链表。底层:transient Node<k,v>[] table; Node是一个单向链表;负载因子=0.75,当length>0.75*size时,数组扩容(以空间换时间:比值越小占空间越大查的越快,比值越大占空间越小查的慢)
HashTable:类似hashMap,有synchronized 线程安全。
TreeMap:基于红黑树,存储时根据key对节点进行排序,速度不如上面两个,要求有序时才用这个。