Java_Queue接口
?Queue接口? 1.英文a)???????? Queue 队列 b)???????? Deque,Double ender queue缩写,双向队列 2.Queue接口除了基本的 Collection 操作外,队列还提供其他的插入、提取和检查操作。每个方法都存在两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值(null 或 false,具体取决于操作)。插入操作的后一种形式是用于专门为有容量限制的 Queue 实现设计的;在大多数实现中,插入操作不会失败。 <table style="width: 100%" summary="" border="1" cellspacing="0" cellpadding="0"> |
<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><span style="color: #0000ff">private</span> <span style="color: #0000ff">int</span> size=0<span style="color: #000000">;
</span><span style="color: #0000ff">private</span> <span style="color: #0000ff">int</span><span style="color: #000000"> cap;
</span><span style="color: #0000ff">private</span> Deque<E><span style="color: #000000">deque;
</span><span style="color: #0000ff">public</span><span style="color: #000000"> MyStack() {
</span><span style="color: #0000ff">super</span><span style="color: #000000">();
deque</span>=<span style="color: #0000ff">new</span> ArrayDeque<E><span style="color: #000000">();
}
<span style="color: #008000">//<span style="color: #008000">public 方法里面不可以使用private,非法语法
<span style="color: #0000ff">public</span> MyStack(<span style="color: #0000ff">int</span><span style="color: #000000"> cap) {
</span><span style="color: #0000ff">super</span><span style="color: #000000">();
</span><span style="color: #0000ff">this</span>.cap =<span style="color: #000000"> cap;
deque</span>=<span style="color: #0000ff">new</span> ArrayDeque<E><span style="color: #000000">();
}
</span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> setCap(<span style="color: #0000ff">int</span><span style="color: #000000"> cap) {
</span><span style="color: #0000ff">this</span>.cap =<span style="color: #000000"> cap;
}
</span><span style="color: #008000">//</span><span style="color: #008000">push 添加 入栈</span>
<span style="color: #0000ff">public</span> <span style="color: #0000ff">boolean</span><span style="color: #000000"> push(E e){
</span><span style="color: #0000ff">if</span>(<span style="color: #0000ff">this</span>.deque.size()+1><span style="color: #000000">cap){
</span><span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span><span style="color: #000000">;
}
</span><span style="color: #0000ff">return</span><span style="color: #000000"> deque.offerLast(e);
}
</span><span style="color: #008000">//</span><span style="color: #008000">poll 移除并获取</span>
<span style="color: #0000ff">public</span><span style="color: #000000"> E poll(){
</span><span style="color: #0000ff">return</span><span style="color: #000000"> deque.pollLast();
}
</span><span style="color: #008000">//</span><span style="color: #008000">peek 不移除并获取</span>
<span style="color: #0000ff">public</span><span style="color: #000000"> E peek(){
</span><span style="color: #0000ff">return</span><span style="color: #000000"> deque.peekLast();
}
</span><span style="color: #008000">//</span><span style="color: #008000">size</span>
<span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span><span style="color: #000000"> size(){
</span><span style="color: #0000ff">return</span> <span style="color: #0000ff">this</span><span style="color: #000000">.deque.size();
}
}
4.模拟银行排序(使用队列先进先出的特点)
<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">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) {
Queue</span><request> q=<span style="color: #0000ff">new</span> ArrayDeque<request><span style="color: #000000">();
</span><span style="color: #0000ff">for</span>(<span style="color: #0000ff">int</span> i=0;i<10;i++<span style="color: #000000">){
</span><span style="color: #008000">//</span><span style="color: #008000">匿名内部类不能调用外部类for的变量,用final修饰</span>
<span style="color: #0000ff">final</span> <span style="color: #0000ff">int</span> num=<span style="color: #000000">i;
q.offer(</span><span style="color: #0000ff">new</span><span style="color: #000000"> request(){
@Override
</span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> deposit() {
</span><span style="color: #008000">//</span><span style="color: #008000"> 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">//</span><span style="color: #008000">出队列,测试先进先出</span>
<span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span><span style="color: #000000"> dealwith(Queue q){
request res</span>=<span style="color: #0000ff">null</span><span style="color: #000000">;
</span><span style="color: #0000ff">while</span>(<span style="color: #0000ff">null</span>!=(res=<span style="color: #000000">(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">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> deposit();
}
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!