集合队列三及其应用

任务调度,LRU,和数组相关的俩个工具:Arrays/Collection

队列:在队尾插入元素,在队头删除
俩端队列:可以在队尾和对头同时进行插入或删除
队列的特点:对元素操作只可以在队头或队尾进行
队列的俩个接口 Queue、Deque(双端队列)
队列的实现类:
1,LinkedList具有队列和俩端队列的功能,内部使用链表来实现的
2,ArrayDeque 具有队列、俩端队列的功能,内部使用循环数组实现
3,PriorityQueue优先级队列,它实现结构可以快速把所有元素中最小的元素单独放出来,栈的数据结构 应用场景:任务调度

队列


  1. add(e)/offer(e)
    在队列未满的情况下,添加元素到队列的尾部。
    如果队列已满,add抛异常IllegalStateException
    offer的话会返回false


  2. remove/poll
    如果队列不为空,删除并返回队头的元素
    如果队列为空:remove 抛异常 NOSuchElementException
    poll返回空
    如果使用remove来删除队尾元素,remove前需要判断是否为空
    size()==0/isEmpty()
    使用poll来获取队尾元素时,获取到结果后,先判断结果是否为空

 //Queue接口的方法
    Queue<String> queue =new LinkedList<>();
    //增删查改
    //add(e)/offer(e)
    //在队列未满的情况下,添加元素到队列的尾部。
    //如果队列已满,add抛异常IllegalStateException
    //offer的话会返回false
    //增
    queue.add("str1");
    queue.add("str3");
    queue.offer("str2");
    queue.offer("str4");
    //删
    //remove/poll
    //如果队列不为空,删除并返回队头的元素
    //如果队列为空:remove 抛异常 NOSuchElementException
    //             poll返回空
    //如果使用remove来删除队尾元素,remove前需要判断是否为空
    //size()==0/isEmpty()
    //使用poll来获取队尾元素时,获取到结果后,先判断结果是否为空
    System.out.println("remove:"+queue.remove());
    System.out.println(queue);
    System.out.println("remove:"+queue.remove());
    System.out.println(queue);
    System.out.println("remove:"+queue.remove());
    System.out.println(queue);
    System.out.println("remove:"+queue.remove());
    System.out.println(queue.isEmpty());
    System.out.println(queue.size());
    System.out.println("poll:"+queue.poll());
    System.out.println("remove:"+queue.remove());
remove:str1
[str3, str2, str4]
remove:str3
[str2, str4]
remove:str2
[str4]
remove:str4
true
0
poll:null
Exception in thread "main" java.util.NoSuchElementException
	at java.util.LinkedList.removeFirst(LinkedList.java:270)
	at java.util.LinkedList.remove(LinkedList.java:685)
	at com.southwind.queueTest.QueueTest.main(QueueTest.java:38)

Process finished with exit code 1

  1. 仅查看队头元素是什么,不删除
    element//peek
    如果队列不为
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值