深入浅出java.util.Queue和Deque

队列 通常来说 是 一种 first in first out 的数据结构 ,也就是 先进先出 FIFO

Queue

在接口中规定了以下6中方法,add继承 Collection
在这里插入图片描述

add 和 offer 添加元素至队列的尾部

remove 和 poll 取出队列的第一个位置元素

element 和 peek 是 检索队列第一个位置是否有元素

add offer 和 put的异同

LinkedBlockingQueue<Integer> queue = new LinkedBlockingQueue<>();
        queue.add(1);
        queue.put(2);
        queue.offer(3);
        System.out.println(queue);

输出结果 [1, 2, 3]
在这里插入图片描述
可以看到put方法会阻塞直到空间可用。

public void put(E e) throws InterruptedException {
        if (e == null) throw new NullPointerException();
        int c = -1;
        Node<E> node = new Node<E>(e);
        final ReentrantLock putLock = this.putLock;
        final AtomicInteger count = this.count;
        putLock.lockInterruptibly();
        try {     
            while (count.get() == capacity) {
                notFull.await();
            }
            enqueue(node);
            c = count.getAndIncrement();
            if (c + 1 < capacity)
                notFull.signal();
        } finally {
            putLock.unlock();
        }
        if (c == 0)
            signalNotEmpty();
    }

在这里插入图片描述

阻塞队列

在这里插入图片描述
新增方法
在这里插入图片描述

在这里插入图片描述

Deque

两端队列

在这里插入图片描述

是一个

ArrayBlockingQueue

add

在这里插入图片描述

offer

在这里插入图片描述
add 封装了 offer ,如果元素放不进去,则抛出异常。

checkNotNull

在这里插入图片描述

poll

在这里插入图片描述

remove

在这里插入图片描述
remove 封装了poll,如果元素取不出来抛出异常

peek

在这里插入图片描述

element

在这里插入图片描述
element 封装了 peek 如果 检索不到元素则抛出异常

take

在这里插入图片描述

put

在这里插入图片描述

take 和 put 则是如果取不出来或者放不进去则一直等待。

x

这个队列的思路真的好,现在它是我简历上的亮点了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值