集合
各种接口的功能
Cloneable接口
clone(),能被克隆
Serializable接口
支持序列化
RandomAccess接口
支持随机访问
Deque接口
当作双端队列使用
NavigableSet接口
实现SortedSet接口
排序的接口
集合类排序
NavigableMap
是SortedMap接口的子接口
Collection
List
ArrayList
- 基于数组的形式实现的集合操作
- ArrayList默认初始长度10,可自定义长度,当Array达到最大长度扩充50%
- 查询快,增删慢,线程不安全,效率高
CopyOnWriteArrayList 线程安全
继承接口
Cloneable接口
Serializable接口
RandomAccess接口
LinkedList
- 是通过双向链表去实现的。包含一个非常重要的内部类:Entry。Entry是双向链表节点所对应的数据结构,它包括的属性有:当前节点所包含的值,上一个节点,下一个节点。
- 查询慢,增删快,线程不安全,效率高
- 任何情况只要是链表操作就都会存在有“O(n)”性能问题。
继承接口
Serializable接口
RandomAccess接口
Deque接口
Vector
- 是基于数组的形式实现的集合操作
- 初始容量10,每次扩容一倍
- 查询快,增删慢,线程安全,效率低
- Vector类中的方法采用的是synchronized同步处理机制
继承接口
Cloneable接口
Serializable接口
RandomAccess接口
注意
自定义类对象的集合可以正常操作,一定要在类中覆写equals()方法
Set
HashSet
- 底层是哈希表
- 无序,允许元素为NULL,是一个HashMap的实例
- 线程不安全的
继承接口
Cloneable接口
Serializable接口
TreeSet
- 底层是二叉树(红黑树)
- 可排序,底层实际上是TreeMap实例
- 线程不安全的
继承接口
Cloneable接口
Serializable接口
NavigableSet接口
LinkedHashSet
- 底层是哈希表+双向链表
- 迭代有序,允许NULL,底层实际上是HashMap+双向链表的实例
- 线程不安全的
继承接口
Cloneable接口
Serializable接口
依靠hashCode()和equals()完成重复元素的判断
Queue
Map
HashMap
- 哈希表实现,内部是数组+链表或者红黑树的结构
- 初始化容量为16,达到75%扩容每次为2倍,key-value可以为NULL值
- 不是线程安全的
WeakHashMap类
继承接口
Cloneable接口
Serializable接口
TreeMap
- 底层是二叉树(红黑树)
- 有序
- 不是线程安全的
继承接口
Cloneable接口
Serializable接口
NavigableMap
Hashtable
- 哈希表实现,内部是数组+链表的结构
- 初始化容量为11,扩容每次为2倍+1,key-value不可以为NULL值
- 线程安全的
继承接口
Cloneable接口
Serializable接口