###图
有图可以看出JAVA集合可以分为list、set、map
LIST
Collection<--List<--Vector
Collection<--List<--ArrayList
Collection<--List<--LinkedList
List为有序的集合
ArrayList 是个数组实现的具有查找的优势可以直接指定坐标 和LinkedList一样,ArrayList也是非同步的(unsynchronized)
Iterator定义了个变量内部实际是数据下标移动的
LinkedList是个链表的实现有删除和增加的优势
注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List: List list = Collections.synchronizedList(new LinkedList(…));
Vector是个线程安全的集合
当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常
###SET Collection<--Set<--HashSet
Collection<--Set<--HashSet<--LinkedHashSet
Collection<--Set<--SortedSet<--TreeSet
list里面的数据是具有唯一性的
set的实现是依据map的key实现的
HashSet允许有个NULL值存在 HashSet是HashMap实现的 这里面是个拉链
LinkedHashSet基于LinkedHashMap实现的 存的是一个拉链但是又维护了一个链表
TreeSet是TreeHashMap实现的底层是一个红黑树
MAP
HashMap
HashTable 线程安全的
LinkedHashMap
TreeHashMap