加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java_Queue接口

发布时间:2020-12-14 06:26:22 所属栏目:Java 来源:网络整理
导读:? Queue接口 ? 1.英文 a)???????? Queue 队列 b)???????? Deque,Double ender queue缩写,双向队列 2.Queue接口 除了基本的 Collection 操作外,队列还提供其他的插入、提取和检查操作。每个方法都存在两种形式:一种抛出异常(操作失败时),另一种返回一个

<tr>
<td colspan="2">
<p align="left">方法摘要


</td>
</tr>
<tr>
<td valign="top" width="1%">
<p align="right">?boolean


</td>
<td>
<p align="left">add(<a title="Queue 中的类型参数">E?e)
??????????将指定的元素插入此队列(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用的空间,则抛出
IllegalStateException。

</td>

</tr>
<tr>
<td valign="top" width="1%">
<p align="right">?<a title="Queue 中的类型参数">E

</td>
<td>
<p align="left">element()
??????????获取,但是不移除此队列的头。

</td>

</tr>
<tr>
<td valign="top" width="1%">
<p align="right">?boolean

</td>
<td>
<p align="left">offer(<a title="Queue 中的类型参数">E?e)
??????????将指定的元素插入此队列(如果立即可行且不会违反容量限制),当使用有容量限制的队列时,此方法通常要优于 add(E),后者可能无法插入元素,而只是抛出一个异常。

</td>

</tr>
<tr>
<td valign="top" width="1%">
<p align="right">?<a title="Queue 中的类型参数">E

</td>
<td>
<p align="left">peek()
??????????获取但不移除此队列的头;如果此队列为空,则返回 null。

</td>

</tr>
<tr>
<td valign="top" width="1%">
<p align="right">?<a title="Queue 中的类型参数">E

</td>
<td>
<p align="left">poll()
??????????获取并移除此队列的头,如果此队列为空,则返回 null。

</td>

</tr>
<tr>
<td valign="top" width="1%">
<p align="right">?<a title="Queue 中的类型参数">E

</td>
<td>
<p align="left">remove()
??????????获取并移除此队列的头。

</td>

</tr>

  3.通过Queue实现类提供的方法来创建自定义堆栈 
<span style="color: #0000ff">import<span style="color: #000000"> java.util.ArrayDeque;

<span style="color: #0000ff">import<span style="color: #000000"> java.util.Deque;

<span style="color: #0000ff">import<span style="color: #000000"> java.util.Queue;

<span style="color: #008000">/*<span style="color: #008000">

  • 自定义堆栈

  • <span style="color: #808080">@author<span style="color: #008000"> Administrator

<span style="color: #008000">*/

<span style="color: #0000ff">public <span style="color: #0000ff">class MyStack<span style="color: #000000">{

     </span><span style="color: #0000ff"&gt;private</span> <span style="color: #0000ff"&gt;int</span> size=0<span style="color: #000000"&gt;;



     </span><span style="color: #0000ff"&gt;private</span> <span style="color: #0000ff"&gt;int</span><span style="color: #000000"&gt; cap;

     </span><span style="color: #0000ff"&gt;private</span> Deque<E><span style="color: #000000"&gt;deque;







     </span><span style="color: #0000ff"&gt;public</span><span style="color: #000000"&gt; MyStack() {

               </span><span style="color: #0000ff"&gt;super</span><span style="color: #000000"&gt;();

               deque</span>=<span style="color: #0000ff"&gt;new</span> ArrayDeque<E><span style="color: #000000"&gt;();

     }

<span style="color: #008000">//<span style="color: #008000">public 方法里面不可以使用private,非法语法

     <span style="color: #0000ff"&gt;public</span> MyStack(<span style="color: #0000ff"&gt;int</span><span style="color: #000000"&gt; cap) {

               </span><span style="color: #0000ff"&gt;super</span><span style="color: #000000"&gt;();

               </span><span style="color: #0000ff"&gt;this</span>.cap =<span style="color: #000000"&gt; cap;

               deque</span>=<span style="color: #0000ff"&gt;new</span> ArrayDeque<E><span style="color: #000000"&gt;();

     }





     </span><span style="color: #0000ff"&gt;public</span> <span style="color: #0000ff"&gt;void</span> setCap(<span style="color: #0000ff"&gt;int</span><span style="color: #000000"&gt; cap) {

               </span><span style="color: #0000ff"&gt;this</span>.cap =<span style="color: #000000"&gt; cap;

     }





     </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;push 添加 入栈</span>

     <span style="color: #0000ff"&gt;public</span> <span style="color: #0000ff"&gt;boolean</span><span style="color: #000000"&gt; push(E e){

               </span><span style="color: #0000ff"&gt;if</span>(<span style="color: #0000ff"&gt;this</span>.deque.size()+1><span style="color: #000000"&gt;cap){

                        </span><span style="color: #0000ff"&gt;return</span> <span style="color: #0000ff"&gt;false</span><span style="color: #000000"&gt;;

               }

               </span><span style="color: #0000ff"&gt;return</span><span style="color: #000000"&gt; deque.offerLast(e);

     }



     </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;poll 移除并获取</span>

     <span style="color: #0000ff"&gt;public</span><span style="color: #000000"&gt; E poll(){

               </span><span style="color: #0000ff"&gt;return</span><span style="color: #000000"&gt; deque.pollLast();

     }





     </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;peek 不移除并获取</span>

     <span style="color: #0000ff"&gt;public</span><span style="color: #000000"&gt; E peek(){

               </span><span style="color: #0000ff"&gt;return</span><span style="color: #000000"&gt; deque.peekLast();

     }

     </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;size</span>

     <span style="color: #0000ff"&gt;public</span> <span style="color: #0000ff"&gt;int</span><span style="color: #000000"&gt; size(){

               </span><span style="color: #0000ff"&gt;return</span> <span style="color: #0000ff"&gt;this</span><span style="color: #000000"&gt;.deque.size();

     }

}

  4.模拟银行排序(使用队列先进先出的特点)

<span style="color: #0000ff">import<span style="color: #000000"> java.util.ArrayDeque;

<span style="color: #0000ff">import<span style="color: #000000"> java.util.Queue;

<span style="color: #0000ff">public <span style="color: #0000ff">class<span style="color: #000000"> QueueDemo {

     </span><span style="color: #0000ff"&gt;public</span> <span style="color: #0000ff"&gt;static</span> <span style="color: #0000ff"&gt;void</span><span style="color: #000000"&gt; main(String[] args) {

               Queue</span><request> q=<span style="color: #0000ff"&gt;new</span> ArrayDeque<request><span style="color: #000000"&gt;();



               </span><span style="color: #0000ff"&gt;for</span>(<span style="color: #0000ff"&gt;int</span> i=0;i<10;i++<span style="color: #000000"&gt;){

                        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;匿名内部类不能调用外部类for的变量,用final修饰</span>

                        <span style="color: #0000ff"&gt;final</span> <span style="color: #0000ff"&gt;int</span> num=<span style="color: #000000"&gt;i;

                        q.offer(</span><span style="color: #0000ff"&gt;new</span><span style="color: #000000"&gt; request(){



                                 @Override

                                 </span><span style="color: #0000ff"&gt;public</span> <span style="color: #0000ff"&gt;void</span><span style="color: #000000"&gt; deposit() {

                                           </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; TODO Auto-generated method stub</span>

<span style="color: #000000">
System.out.println("第"+num+"人正在办理业务,请稍后"<span style="color: #000000">);

                                 }



                        });

               }







               dealwith(q);



     }



     </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;出队列,测试先进先出</span>

     <span style="color: #0000ff"&gt;public</span> <span style="color: #0000ff"&gt;static</span> <span style="color: #0000ff"&gt;void</span><span style="color: #000000"&gt; dealwith(Queue q){

               request res</span>=<span style="color: #0000ff"&gt;null</span><span style="color: #000000"&gt;;

               </span><span style="color: #0000ff"&gt;while</span>(<span style="color: #0000ff"&gt;null</span>!=(res=<span style="color: #000000"&gt;(request) q.poll())){

                        res.deposit();

               }

     }

}

<span style="color: #008000">//<span style="color: #008000">定义一个接口

<span style="color: #0000ff">interface<span style="color: #000000"> request{

     </span><span style="color: #0000ff"&gt;public</span> <span style="color: #0000ff"&gt;void</span><span style="color: #000000"&gt; deposit();

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

?

Queue接口

?  1.英文

    a)???????? Queue 队列

    b)???????? Deque,Double ender queue缩写,双向队列

  2.Queue接口

     除了基本的 Collection 操作外,队列还提供其他的插入、提取和检查操作。每个方法都存在两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值(nullfalse,具体取决于操作)。插入操作的后一种形式是用于专门为有容量限制的 Queue 实现设计的;在大多数实现中,插入操作不会失败。

<table style="width: 100%" summary="" border="1" cellspacing="0" cellpadding="0">

    推荐文章
      热点阅读