当前位置:
文档之家› Java集合类简介及选择,List,Set,Map
Java集合类简介及选择,List,Set,Map
2
Set的特性:
不保存重复元素,元素必须实现equals()方法;
不保证维护元素的次序。
底层实现
特性
适用场合
HashSet
查询速度最快;
元素必须定义hashCode()方法
默认选择
LinkedHashSet
链表
具有HashSet的查询速度;
内部使用链表维护元素插入的次序;
元素必须定义hashCode()方法
TreeSet
树结构
可以从Set中提取有序的序列;
元素必须实现Comparable接口
3
底层实现
特性
适用场合
HashMap散列表Biblioteka 插入和查询的开销是固定的;
可以通过构造方法设置容量和负载因子,调整性能
默认选择
LinkedHashMap
链表
取得元素的顺序是其插入次序,或者最近最少使用次序;
插入时比HashMap略慢,但迭代时更快
TreeMap
红黑树
总是保证有序;
可以通过subMap()方法返回一个子树
WeakHashMap
弱键映射,允许释放映射所指向的对象
ConcurrentHashMap
线程安全,不涉及同步加锁
IdentityHashMap
用==代替equals()进行比较;
插入操作不会随着Map尺寸变大而明显变慢
1
底层实现
特性
适用场合
Vector/Stack
版本较低,避免使用
ArrayList
数组
访问快速
默认选择;
需要执行大量的随机访问
LinkedList
双向链表
插入和删除代价低廉
要经常在表中插入或删除元素
最佳做法:将ArrayList做为默认首选,只有当需要额外的功能,或者当程序的性能因为经常从表中间进行插入和删除而变差的时候,才去选择LinkedList。如果元素数量固定,既可以使用List,也可以使用数组。