【文件属性】:
文件名称:Java容器.xmind
文件大小:174KB
文件格式:XMIND
更新时间:2022-09-26 17:03:09
复习
container
Collection
标记: *接口
List
标记: interface
ArrayList
标记: class
CRUD :
boolean add(E e)
boolean remove(Object o)
E set(int index, E element)
E get(int index)
底层数组实现,查询快,增删慢
LinkedList
标记: class
CRUD :
boolean add(E e)
E get(int index)
底层为链表,增删快,查询快
Vector
标记: class
底层数组实现,线程安全,速度太慢,没用
CopyOnWriteArrayList
标记: class
Set
标记: interface
HashSet
标记: class
CRUD :
boolean add(E e)
boolean remove(Object o)
底层哈希表,基于hashCode的equals的比较方式,线程不安全,存取速度快。
SortedSet
标记: interface
TreeSet
标记: class
实现comparable接口,元素是以二叉树的形式存放的。线程不安全
CopyOnWriteArraySet
标记: class
Queue
标记: interface
BlockingQueue
标记: interface
ArrayBlockingQueue
LinkedBlockingQueue
ConcurrentLinkedQueue
标记: class
Map
标记: *接口
HashMap
标记: class
V get(Object key)
V put(K key, V value)
Set
keySet()
Set> entrySet()
线程不安全,速度快,允许存放null键,null值。
SortedMap
标记: class
TreeMap
对键进行排序
HashTable
标记: class
Properties
标记: class
线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。
Collections
标记: 均以synchronized实现, 性能没用提高
synchronizedCollection
synchronizedList
synchronizedSet
synchronizedMap
synchronizedSortedSet
synchronizedSortedSet
JUC
CopyOnWriteArrayList
写有锁,读无锁,读写之间不阻塞,优于读写锁
写入时先copy一个容器副本,再添加新元素,最后替换引用
copy的容器副本过大时,速度慢,不易使用
CopyOnWriteArraySet
底层使用CopyOnWriteArrayList实现
使用addIfAbsent()添加元素时,会遍历数组,如果存在元素,则抛弃副本
ConcurrentHashMap
初始容量默认为16段(segment),使用分段锁设计
ConcurrentLinkedQueue
高并发下性能最好的队列
无锁,采用CAS比较算法,核心参数(V,E,N)
V:要更新的变量
E:预期值
N:新值
只有当V==E时,V=N;否则表示已被更新过,则取消当前操作
阻塞队列
BlockingQueue接口
void put(E e)
将指定元素插入此队列,如果没有可用空间,则等待
E take()获取并移除此队列头部元素,如果没有可用元素,则等待
ArrayBlockingQueue 数组结构实现,有界队列,手工固定上限
LinkedBlockingQueue 链表结构实现,*队列(默认上限Integer.MAX_VALUE)