zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    知识点:synchronized 原理分析
    知识点:spring 完全手册
    知识点:图说 Mysql 权限管理
    知识点:Mysql 基本用法之流程控制
    知识点:Mysql 基本用法之函数
    知识点:Mysql 基本用法之存储过程
    知识点:Mysql 基本用法之事务
    知识点:Mysql 基本用法之触发器
    知识点:Mysql 基本用法之视图
    知识点:MySQL表名不区分大小写的设置方法
  • 原文地址:https://www.cnblogs.com/leonxyzh/p/7288970.html
Copyright © 2011-2022 走看看