Java集合ソース分析のQueue(一):スーパーインタフェースQueue
日常生活の中で、行列はほとんど随所に見られ、地下鉄に乗るには行列ができ、汽車の切符を買うには行列ができ、食事に出かけるにも行列ができます..前に検討した
今日ご紹介する
もちろん
スーパーインタフェースQueue
キューはソフトウェア開発において重要な役割を果たし,java関数の呼び出しはスタックの技術を用い,同時問題を処理する際に
まず、
スーパーインプリメンテーションクラスAbstractQueue
また、
ArrayList
管理が乏しいキューシステムのようです.みんなは行列ができますが、一人で歩いて、みんなは前に移動して、一人で挿入して、みんなは後ろに移動して、このような行列に出会って、きっと人を苦しめますか?今日ご紹介する
Queue
違いますが、厳格な行列システムです.多くの駅の並んでいる窓口が両側にガードレールをつけているように、みんなは列の尾から入って、列の頭から離れるしかありません.私たちはFIFO(first in first out)
と呼ばれています.つまり、先に入った人が先に離れます.Queue
この原則に厳格に従い、割り込みや早期離脱を不可能にした.もちろん
Queue
変種も多いがFIFO
それに従う唯一のルールではない.例えばStack
(桟)は、LIFO(last in first out)
に従います.これは私たちが茶碗を畳むように、後から来る者が上にいます.また、私たちが後で分析するDeque
要素を両端から挿入または削除することができます.例えば、列に並んで駅に入ると、「列を挿入してもいいですか.急いでいますか」と言う人がいます.スーパーインタフェースQueue
キューはソフトウェア開発において重要な役割を果たし,java関数の呼び出しはスタックの技術を用い,同時問題を処理する際に
BlockingQueue
データ伝送の問題をうまく解決した.次にJavaがキューをどのように定義しているかを見てみましょう.まず、
Queue
もCollection
から継承し、集合家族の一員であることを説明する.Queue
インタフェースは主に以下の方法を提供している://
boolean add(E e);
// , add ,
boolean offer(E e);
// ,
E remove();
// , null
E poll();
// , ,
E element();
// , , null
E peek();
スーパーインプリメンテーションクラスAbstractQueue
Queue
の定義は簡単なので、現クラスも簡単で、簡単なコードで複雑なことをするのは、私たちが学ぶ価値があります.AbstractQueue
実現のみadd
・remove
とelement
の3つの方法があり、それぞれ別のわずかな違いの方法が呼び出されているが、ここではその1つのみを見る// , , offer
public boolean add(E e) {
if (offer(e))
return true;
else
throw new IllegalStateException("Queue full");
}
また、
clear
・addAll
・という方法も実現しており、これらの方法を書き換えることで現在のシーンに合わせることができます.public void clear() {
while (poll() != null)
;
}
public boolean addAll(Collection extends E> c) {
if (c == null)
throw new NullPointerException();
if (c == this)
throw new IllegalArgumentException();
boolean modified = false;
for (E e : c)
if (add(e))
modified = true;
return modified;
}
:https://www.jianshu.com/p/41752e1a0978