記事のディレクトリ
Javaコンテナ--Queue(キュー)の分析およびアプリケーションインターフェイス
1、の概念
キュー。キューは、それが共通のデータインタフェースである、Collectionインタフェースを継承しています。キューはインターフェイスです。Dueueキュー・インターフェースを継承しました。LinkedListのは、キューのインターフェイスを実装しています。
キュー:キューウェイ、FIFOの原則に従ってください。
Dueue:一端のみからのDequeエンキューおよびデキューを制限する場合はダブルエンドキュー要素、キューエンキュー(申し出)の両端には、(投票を)デキューすることができ、スタックのデータ構造を実現することができます。スタックの場合、スタックは(プッシュ)を有し、(ポップ)ポップ、先進的な原則の後に従ってください。
図2に示すように、一般的な方法
(1)キュー常法
末尾に要素を追加します
追加():尾、真の成功のリターンに要素を追加する
プランを():最後尾に要素を追加し、このキューに容量制限要素に違反することなく、すぐに指定されている場合。キューの容量を使用することが制限される場合、この方法は、一般的に添加することが好ましい、後者の要素が例外をスローを介して挿入することができません。
取得およびキューの先頭を削除します
)(削除:取得してキューが空の場合、このキューの先頭を削除し、例外がスローさはNoSuchElementExceptionの
投票を():取得およびキューが空の場合、このキューの先頭を削除し、nullが返されます
削除せずに、キューの最初の要素を取得します。
要素は、():要素の最初のチームを取得しますが、キューから削除されません。キューが空の場合、はNoSuchElementExceptionがスローされます
)(PEEKを:要素の最初のチームを取得しますが、キューから削除されません。このキューが空の場合、nullが返されます
(2)Dueue常法
3.アプリケーション
(1)シミュレート銀行預金キュー(FIFO)を使用し
/**
* 使用队列模拟银行存款业务(先进先出)
* @author Linlin Zhao
*
*/
public class QueueDemo01 {
public static void main(String[] args) {
Queue <Request> que =new ArrayDeque<Request>();
//模拟排队情况
for(int i=0;i<10;i++){
final int num=i;//匿名内部类,只能访问final对象。
que.offer(new Request() {
@Override
public void deposit() {
System.out.println("第"+(num+1)+"个人,办理存款业务,存款额度为: "+Math.round(Math.random()*100000));
}
});
}
dealWith(que);
}
//处理业务。先进先出。
public static void dealWith(Queue<Request> queue){
Request req=null;
while(null!=(req=queue.poll())){
req.deposit();
}
}
}
interface Request{
//存款
void deposit();
}
(2)Dueue実装カスタム・スタックを使用して
/**
* 使用队列实现自定义栈
* 1、弹栈
* 2、压栈
* 3、获取头
* @author Linlin Zhao
*
*/
public class MyStack01<E> {
//容器
private Deque<E> container =new ArrayDeque<E>();
//容量
private int cap;
public MyStack01(int cap) {
super();
this.cap = cap;
}
//压栈
public boolean push(E e){
if(container.size()+1>cap){
return false;
}
return container.offerLast(e);//加到队尾
}
//弹栈
public E pop(){
return container.pollLast();//移除队尾
}
//获取
public E peek(){
return container.peekLast();//获取队尾
}
public int size(){
return this.container.size();//队列长度
}
public static void main(String[] args) {
}
}