1.容器分类
Map:
HashMap
TreeMap
ConcurrentMap(并发)
ConcurrentHashMap(并发)
EnumMap(enum)
Collection:
List:
ArrayList
LinkedList
CopyOnWriteArrayList(并发)
Set:
HashSet
TreeSet
CopyOnWriteArraySet(并发)
EnumSet(enum)
Queue:
PriorityQueue
BlockingQueue
2.填充容器
3.Collection的功能方法
add(T)
addAll(Collection<T>)
contains(T)
isEmpty()
remove(Object)
size()
toArray()
4.List(有序,元素可重复)
add()
get()
iterator()
ArrayList: 底层是数组
LinkedList: 双向链表
5.Set(无序,元素不重复)
HashSet: 为快速查找而设计的Set,存入HashSet的元素必须定义hashCode()
TreeSet: 保持次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。元素必须实现Comparable接口。
LinkedHashSet: 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的顺序)。元素也必须定义hashCode()。
6.Map(保存键值对,键唯一)
HashMap:使用了散列码来取代对键的缓慢搜索。散列码是相对唯一的,用以代表对象的int值。hashCode是Object中方法,因此所有java对象都能产生散列码。
TreeMap:基于红黑树的实现。查看键或者键值对时,它们会被排序,排序由Comparable决定。TreeMap特点在于所得到的结果是经过排序的。
LinkedHashMap:类似于HashMap,但是迭代时取得键值对的顺序是其插入顺序,故而迭代更快,因为它使用链表维护内部次序。
ConcurrentHashMap:线程安全的Map。
HashMap---为提高查询性能---散列码(类似于主键,hashCode)----为速度而散列---散列是查询得以快速进行
7.选择接口的不同实现
List:
ArrayList:get(),set()快---默认首选
LinkedList:插入和删除元素快
Set:
HashSet:添加查询快
TreeSet:支持排序,迭代快
LinkedHashSet:插入操作LinkedHashSet比HashSet代价更高,这是由维护链表所带来的额外开销引起的
Map:
HashMap:默认首选
LinkedHashMap:兼顾迭代
TreeMap:支持排序
8.Collection或Map的同步控制
直接将新生成的容器传递给适当的“同步”方法,这样就不会有任何机会暴露出任何不同步的版本:
Collections.synchronizedCollection(new ArrayList<String>())
Collections.synchronizedList(new ArrayList<String>())
Collections.synchronizedMap(new HashMap<String,String>())