28、队列和栈

1、队列Queue

  在java5中新增加了java.util.Queue接口,用以支持队列的常见操作。该接口扩展了java.util.Collection接口。Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。 如果要使用前端而不移出该元素,使用element()或者peek()方法。值得注意的是LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。

  Queue提供了操作队列的相关方法,其主要方法如下:

  boolean offer(E e):将元素追加到队列末尾,若添加成功则返回true。

  E poll():从队首删除并返回该元素。

  E peek():返回队首元素,但是不删除。

 1 Queue<String> queue=new LinkedList<String>();
 2 //入队
 3 queue.offer("a");
 4 queue.offer("b");
 5 queue.offer("c");
 6 System.out.println(queue);
 7 System.out.println(queue.element());  //获取队首a,但不删除队首
 8 System.out.println(queue.peek());     //获取队首a,但不删除队首
 9 //出队
10 while(queue.size()>0){
11     System.out.println(queue.poll());//a、b、c 
12 }

 

2、Deque(双队列)

  Deque是Queue的子接口,定义了所谓“双端队列”即从队列的两端分别可以入队(offer)和出队(poll),LinkedList实现了该接口。

  如果将Deque限制为只能从一端入队和出队,则可实现“栈”(Stack)的数据结构,对于栈而言,入栈称之为push,出栈称之为pop。

  栈遵循先进后出(FILO First Input Last Output )的原则。

  Deque提供了操作栈的相关方法,其主要方法如下:

  void push(E e):将给定元素"压入"栈中。存入的元素会在栈首。即:栈的第一个元素

  E pop():将栈首元素删除并返回。

1 Deque deque = new LinkedList();
2 deque.push("a");
3 deque.push("b");
4 deque.push("c");
5 while(deque.size()>0){
6     System.out.println(deque.pop());  //c、b、a
7 }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值