interface Collection
不可重复无序 Set(interface), 是Collection的子接口,删除和插入的效率高,检查元素效率低下
1. LinkedSet
2. HashSet
3. LinkedHashSet
4. TreeSet
可重复有序 List, 是Collection的子接口,查找元素的效率较高,插入元素和删除元素效率低
1. ArrayList:基于数组实现,查询赋值较快
2. Vector:基于数组实现,加了Synchronized,保证线程安全,适用于多线程
3. LinkedList:基于链表实现,增删较快
注:LinkedList实现了Queue 接口,因此,我们也可以理解为 LinkedList 就是一个队列;
Queue: 队列是一种特殊的线性表,遵循先入先出、后入后出的基本原则,分阻塞队列(线程安全)和非阻塞队列
1.BlockingQueue(阻塞队列)
1、DelayQueue
一个支持延时获取元素的无界阻塞队列
2、LinkedTransferQueue
一个由链表结构组成的无界阻塞队列。
3、ArrayBlockingQueue
有界队列,阻塞式,初始化时必须指定队列大小,且不可改变,底层由数组实现;
4、SynchronousQueue
最多只能存储一个元素,每一个put操作必须等待一个take操作,否则不能继续添加元素
5、PriorityBlockingQueue
一个带优先级的队列,而不是先进先出队列。元素按优先级顺序被移除,而且它也是无界的,也就是没有容量上限,虽然此队列逻辑上是无界的,但是由于资源被耗尽,所以试图执行添加操作可能会导致 OutOfMemoryError 错误;
2.AbstractQueue(非阻塞队列)
1、ConcurrentLinkedQueue
单向链表结构的无界并发队列, 非阻塞队列,由CAS实现线程安全,内部基于节点实现
2、ConcurrentLinkedDeque
双向链表结构的无界并发队列, 非阻塞队列,由CAS实现线程安全
3、PriorityQueue
内部基于数组实现,线程不安全的队列
Deque:Java数据结构之Deque(双端队列)_Jason&Zhou的博客-CSDN博客_deque java
Map: 不是Collection接口的继承
1. HashMap 非线程安全,允许使用null键和null值,与HashSet一样,不保证映射的顺序
2. LinkedHashMap 按照添加顺序不变,使用LinkedHashMap
3.TreeMap 可以自然排序,也可以自定义排序规则,要实现Comparator接口
4. HashTable 线程安全,不允许使用 null 作为 key 和 value,不能保证其中 Key-Value 对的顺序
5. ConcurrentHashMap 线程安全
Collections.synchronizedMap包装后返回的map是加锁的
https://www.jb51.net/article/239557.htm
https://www.jb51.net/article/224337.htm
Properties 类是 Hashtable 的子类,该对象用于处理属性文件,由于属性文件里的 key、value 都是字符串类型,所以 Properties 里的 key 和 value 都是字符串类型