Java 8 集合不完全一览
JDK 8
List
名称 | 线程安全 | 数据结构 | 允许 null | 默认初始容量 | 扩容策略 | 备注 |
---|---|---|---|---|---|---|
ArrayList | 不安全 | 数组 | 允许 | 10 | 1.5 * old | |
LinkedList | 不安全 | 双链表 | 允许 | N/A | N/A | 作为 List 使用时,最好换用低复杂度的 TreeList |
CopyOnWriteArrayList | 安全 | 数组 + 快照 | 允许 | 0 | +1 |
Map
名称 | 线程安全 | 数据结构 | 允许 null key | 允许 null value | 有序性 | 默认初始容量 | 扩容策略 | 备注 |
---|---|---|---|---|---|---|---|---|
HashMap | 不安全 | 多个(单链表或者红黑树)组成的数组 | 允许 | 允许 | 无序 | 16 | 2 * old | |
IdentityHashMap | 不安全 | 数组 | 允许 | 允许 | 无序 | 32 | ? | |
LinkedHashMap | 不安全 | 多个双链表组成的数组 | 允许 | 允许 | 有序(access-order 或者 insertion-order) | 16 | 2 * old | |
TreeMap | 不安全 | 红黑树 | 不允许 | 允许 | 有序 | N/A | N/A | |
EnumMap | 不安全 | 数组 | 不允许 | 允许 | 有序 | N/A | N/A | |
ConcurrentHashMap | 安全 | 多个(单链表或者红黑树)组成的数组 | 不允许 | 不允许 | 无序 | 16 | 2 * old | |
ConcurrentSkipListMap | 安全 | 跳表 | 不允许 | 不允许 | 有序 | N/A | ? |
Set
名称 | 线程安全 | 数据结构 | 允许 null | 有序性 | 备注 |
---|---|---|---|---|---|
HashSet | 不安全 | HashMap | 允许 | 无序 | |
LinkedHashSet | 不安全 | LinkedHashMap | 允许 | 有序(insertion-order) | |
TreeSet | 不安全 | TreeMap | 不允许 | 有序 | |
ConcurrentSkipListSet | 安全 | ConcurrentSkipListMap | 不允许 | 有序 | |
CopyOnWriteArraySet | 安全 | CopyOnWriteArrayList | 允许 | 无序 |
Queue
名称 | 线程安全 | 数据结构 | 允许 null | 默认初始容量 | 扩容策略 | 备注 |
---|---|---|---|---|---|---|
ArrayDeque | 不安全 | 数组 | 不允许 | 16 | 2 * old | head 从数组的最大下标开始变小,tail 从 0 开始变大 |
PriorityQueue | 不安全 | 平衡最小二叉堆 | 不允许 | 11 | old < 64 则 2 * old; 否则 1.5 * old | 空穴, sift up,sift down |
ConcurrentLinkedQueue | 安全 | 单链表 + CAS | 不允许 | N/A | N/A | |
ConcurrentLinkedDeque | 安全 | 双链表 + CAS | 不允许 | N/A | N/A | |
ArrayBlockingQueue | 安全 | 循环数组 | 不允许 | N/A | 定长, 不可扩容 | 有 fair 选项; 2. 有一把公共的 ReentrantLock 与 notFull、notEmpty 两个 Condition 管理队列满或空时的阻塞状态 |
LinkedBlockingQueue | 安全 | 单链表 | 不允许 | N/A | 定长或无界 | 利用链表的特征,分离了 takeLock 与 putLock 两把锁,继续用 notEmpty、notFull 管理队列满或空时的阻塞状态 |
LinkedBlockingDeque | 安全 | 双链表 | 不允许 | N/A | 定长或无界 | 利用链表的特征,分离了 takeLock 与 putLock 两把锁,继续用 notEmpty、notFull 管理队列满或空时的阻塞状态 |
PriorityBlockingQueue | 安全 | 平衡最小二叉堆 | 不允许 | 11 | old < 64 则 2 * old; 否则 1.5 * old | 空穴, sift up,sift down |
DelayQueue | 安全 | PriorityQueue | 不允许 | 见 PriorityQueue | 见 PriorityQueue | ScheduledThreadPoolExecutor 用了类似的结构 |
SynchronousQueue | 安全 | N/A | 不允许 | 1 | N/A | 有 fair 选项 |
LinkedTransferQueue | 安全 | 单链表 + CAS | 不允许 | N/A | N/A |
转载于:https://www.cnblogs.com/leonxyzh/p/7288970.html
Java 8 集合不完全一览相关推荐
- java 数组集合转换_Java 实例 – 集合转数组
Java 实例 - 集合转数组 以下实例演示了如何使用 Java Util 类的 list.add() 和 list.toArray() 方法将集合转为数组: /* author by w3cscho ...
- java icomparer_集合数据处理(C#、JavaScript 和 Java)
Java 丢了好多年,最近在拣起来,首先当然是了解这么多年来它的变化,于是发现了 Java 8 的java.util.stream.在学习和试验的过程中,相比较于 C# 和 javascript,有那 ...
- java中集合的区别_Java中的集合与集合之间的区别
Java收集框架用于操纵对象的收集.收集框架包含多个包装器类,便利类,用于传统实现的类,例如vector和Hashtable,收集接口等. 集合是Java集合框架中的接口.它分为两部分-Java ut ...
- Java面试集合(二)
前言 大家好,给大家带来Java面试集合(二)的概述,希望你们喜欢 二 1.请问线程有哪些状态? 新建状态(New) 就绪状态(Runnable) 运行状态(Running) 阻塞状态(Blocked ...
- java中集合的排序
java中集合的排序 import java.util.Set; import java.util.HashSet; import java.util.List; import java.util.A ...
- (7)Java数据结构--集合map,set,list详解
MAP,SET,LIST,等JAVA中集合解析(了解) - clam_clam的专栏 - CSDN博---有颜色, http://blog.csdn.net/clam_clam/article/det ...
- java各种集合的线程安全
转载自 java各种集合的线程安全 线程安全 首先要明白线程的工作原理,jvm有一个main memory,而每个线程有自己的working memory,一个线程对一个variable进行操作时 ...
- Java Map集合面试题汇总
转载自 Java Map集合面试题汇总 1. 你都知道哪些常用的Map集合? 2.Collection集合接口和Map接口有什么关系? 3.HashMap是线程安全的吗?线程安全的Map都有哪些?性能 ...
- java 读取集合到流中_Java 10:将流收集到不可修改的集合中
java 读取集合到流中 Java 10引入了几种新方法来促进不可修改集合的创建. List.copyOf , Set.copyOf和Map.copyOf方法从现有实例创建新的集合实例. 例如: Li ...
最新文章
- jittor拟合sin函数
- 【Transformer】ACMix:On the Integration of Self-Attention and Convolution
- Android自己的自动化测试Monkeyrunner和用法示例
- abaqus python 建立节点集合_在Python中创建Abaqus集
- NBU7.5升级至8.1.2(在不考虑授权的情况)
- javascript、jquery获取网页的高度和宽度
- python import模块熟悉方法
- 【Django】Specifying a namespace in include() without providing an app_name is not supported
- FFmpeg — 视频剪辑、动静水印、转场特效[gl-transitions]
- 基于java的扫雷游戏设计01
- 7-1 计算物体自由下落的距离
- 2021前端面试经典计算题总结。
- 英语钻石法则(六)-----学习地道、实用的材料
- firefox 浏览器证书问题
- 百度天气预报接口使用详细
- 初识C语言——冒泡排序法
- WEB端和手机端-三种提示框架
- vue3解读—reactivity响应式实现
- IAR工程中的各个文件的含义
- 当了10年程序员,我开窍了