Java 8 集合不完全一览

原创 2017年02月07日 11:00:00

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

Java8中新增加的集合类

前言 在平常的开发中,有时我们需要存放多个数据,因此也就有了集合的存在,这篇博客着重讲解一下java8给我们带来的一些类关于Collection的操作。 Collection接口  正如上图所示,Co...
  • ZHOUCHAOQIANG
  • ZHOUCHAOQIANG
  • 2015年12月03日 09:32
  • 2779

不惑JAVA之JAVA基础 - Concurrent 概述

本来想写ConcurrentHashMap的,但是感觉单写这一个知识点有点烂大街。java.util.concurrent包除了ConcurrentHashMap还是有很多好东西的,下面将会对一些重点...
  • happy_85
  • happy_85
  • 2016年05月18日 18:13
  • 2434

Java8集合及Stream操作

集合、流Stream操作测试: import java.util.Arrays; import java.util.List; import java.util.Map; import java.ut...
  • dalinsi
  • dalinsi
  • 2017年09月20日 22:45
  • 154

Java 8 集合不完全一览

JDK 8List 名称 线程安全 数据结构 允许 null 默认初始容量 扩容策略 备注 ArrayList N 数组 Y 10 1.5 * old...
  • leonzhouwei
  • leonzhouwei
  • 2017年02月07日 11:00
  • 442

JDK8的集合流式操作

一. 基本概念 1.1 为什么加入 集合的流式操作              JDK8 的Stream 是一个受到 函数式编程 和 多核时代影响而产生的东西。很多时候我们需要到底层返回数据,上层...
  • asdfsadfasdfsa
  • asdfsadfasdfsa
  • 2017年02月18日 09:34
  • 743

java 集合一览

Collection 否 是 List 是 是 Set AbstractSet 否 否 ...
  • stayhsf
  • stayhsf
  • 2011年10月18日 10:30
  • 266

JAVA8 最新电子书集合

JAVA8 最新电子书集合  Advanced_topics in java.pdf: http://www.t00y.com/file/99285272 Beginning Java 8...
  • fuxiaohui
  • fuxiaohui
  • 2016年09月28日 18:28
  • 3073

Java各种jar包大集合

  • 2015年10月30日 13:25
  • 8.18MB
  • 下载

java ArrayList集合反转 学习笔记

题目:写一个函数reverseList。该函数能够接收一个List,然后把该List倒序排序 思路: ① 创建ArrayList集合,并初始化 ② 利用Collections中的reve...
  • qq_27367827
  • qq_27367827
  • 2017年08月03日 19:58
  • 266

采用java8 lambda表达式 实现 java list 交集 并集 差集 去重复并集

采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集一般的javaList 交、并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的j...
  • gzt19881123
  • gzt19881123
  • 2017年10月24日 11:12
  • 1510
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 8 集合不完全一览
举报原因:
原因补充:

(最多只允许输入30个字)