Java中的集合

集合

底层实现备注接口
ArrayListObject[]默认的数组大小是10List
LinkedListNode(双向链表)List Deque
VectorObject[]线程安全的ArrayList,但是存在并发删除报错的异常List
HashSetHashMap使用Map的key保存元素,value是一个空对象Set
LinkedHashSetLinkedHashMapHashSet Set
TreeSetTreeMapSet
HashMapNode[] 单向链表默认数组大小为16,加载因子是0.75Map
LinkedHashMap额外使用一个链表保存保存元素的插入顺序HashMap Map
TreeMap红黑树按照特定的比较器进行元素排序Map
HashTable线程安全的HashMap,但是存在并发删除报错的异常Map

非阻塞队列

非阻塞队列的特色就是队列里面没有数据时,操作队列出现异常或返回null,不具有等待/阻塞的特色。

ConcurrentHashMap

类ConcurrentHashMap是支持并发操作的Map对象。
与HashTable的区别:HashTable不支持在循环中remove()元素,HashTable在获得Iterator对象后,不允许更改其结构,否则出现java.util.ConcurrentModificationException异常。

ConcurrentSkipListMap

类ConcurrentSkipListMap支持根据对象的compareTo()方法进行排序

ConcurrentSkipListSet

类ConcurrentSkipListSet支持排序而且不允许重复的元素

ConcurrentLinkedQueue

类ConcurrentLinkedQueue提供了并发环境的队列操作。
- 方法poll()当没有获得数据时返回null,如果有数据时则移除表头,并将表头进行返回。
- 方法element()当没有获得数据时出现NoSuchElementException异常,如果有数据时则返回表头项。
- 方法peek()当没有获得数据时返回为null,如果有数据时则不移除表头,并将表头进行返回。

ConcurrentLinkedDeque

ConcurrentLinkedQueue仅支持对列头进行操作,而ConcurrentLinkedDeque支持对列头列尾双向操作。

CopyOnWriteArrayList

线程安全的ArrayList

CopyOnWriteArraySet

线程安全的HashSet

阻塞队列

  • 如果阻塞队列是空的,从阻塞队列中取东西的操作将会被阻塞进入等待状态,直到阻塞队列中添加了元素才会被唤醒。
  • 如果阻塞队列是满的,从阻塞队列中存放元素的操作将会进行等待状态,知道阻塞队列里有剩余空间才会被唤醒继续操作。

ArrayBlockingQueue

类ArrayBlockingQueue提供一种有界阻塞队列的功能。底层使用数组实现。

LinkedBlockingQueue

类LinkedBlockingQueue和ArrayBlockingQueue在功能上大体一样,只不过ArrayBlockingQueue是有界的,而LinkedBlockingQueue是无界的,但也可以定义为有界的。底层使用链表实现。

LinkedBlockingDeque

类LinkedBlockingQueue只支持对列头的操作,而LinkedBlockingDeque支持对双端结点的操作。

PriorityBlockingQueue

类PriorityBlockingQueue支持在并发情况下的优先级队列。

SynchronousQueue

类SynchronousQueue为异步队列,是一种阻塞队列,其中每个插入操作必须等待另一个线程的对应移除操作,反之亦然。

LinkedTransferQueue

类LinkedTransferQueue提供的功能与SynchronousQueue有些类似,但其具有嗅探功能,也就是可以尝试性地添加一些数据。

DelayQueue

类DelayQueue提供一种延时执行任务的队列。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值