List和array的转换
Object[] array=list.toArray();
Integer[] array =list.toArray(new Integer[3]);
注意,这里的3是指创建array的大小,当数组小的话,会自动扩容为刚好的大小,若是大了,剩下的空间会变为null。可以使用list.size()来刚好创建数组。
ArrayList
Arraylist是线性队列结构,默认为Object类型数组,可以使用泛型指定,优点为查询快
LinkedList
LinkedList为双向链表结构,优点为插入快,删除快
Vector
与ArrayList相同,封装了一个数组,不同的是加了一把同步锁,里面有对象时,重写equals方法
Stack
Stack继承了Vector,是栈的实现,可以使用LinkedList去实现
Set
set为无序不重复集合。
HashMap与Hashtable
HashMap为key与value的键值对,key为set集合,不可重复,value为list,可以重复,他是单线程的,多线程会造成死锁,初始值为16,扩容为2倍。
hashtable是线程完全的,每个方法都加了同步锁,适用于多线程,扩容为2n+1倍
TreeSet
TreeSet其实就是红黑树,左节点为小值,右节点为大值,内容需排序,不能添加null。
TreeMap
继承于SortMap,内部对key排序,key需实现Comparable接口,比较时依赖key的compareTo或者Conparetor.conpare()方法,相等的时候返回0。
Queue
Queue为队列,PriorityQueue为优先级队列,底层为堆。
Deque
为双向队列,可用于实现Stack,stack为栈,那么我们就只使用队首的方法,不使用队尾的方法。