私が学んだことによると、キューには先入れ先出しの動作を順守する責任があります。
あなたはおそらく、理想化されたFIFOキューがどのように機能するかを説明する教科書や講義ノートなどを読んでいるでしょう。しかし、気付いていないのは、すべてのキューがFIFOであるとは限らないということです。現実の世界ではなく、コンピュータシステムでもありません。(たとえば、(仮に)オバマ大統領が忙しいマクドナルドのレストランに行った場合、彼はすぐに列の先頭に移動したことがわかります。これは、FIFO以外の方法で動作する列です。)
とにかく、JavaQueue
は、FIFOキューだけでなく、あらゆる種類のキューのインターフェースです。また、優先キューや、独自の実装クラスを提供したい場合に思いつく可能性のあるその他のキューイングセマンティクスもサポートします。
もう一つのポイントは、remove(E)
オペレーションが「次の顧客お願い」オペレーションを提供していないということです。これは、顧客が本当にピザを好むと判断し、ドアから出て行くのと同じです。理想化されたキューはこれをサポートしていませんが、使用可能なライブラリクラスはサポートしています...アプリケーションはこの種のことを実行できる必要があるためです。
要するに、JavaCollection
クラス階層(手がかりを含むQueue
)は、誰かのデータ構造の抽象モデルに厳密に適合するのではなく、便利で使いやすいように設計されているということです。
しかし、キューはsneakInメソッドを許可する可能性があります。これにより、キューの真ん中に忍び込むことができます。そのメソッドはどこにありますか?
まあ、ほとんどの実際のアプリケーションはそれを必要としないので、それはありません。(それが一般的なユースケースである場合、そのようなメソッドは、インターフェイスにない場合でも、特定のキュー実装クラスで提供されQueue
ます。)
繰り返しになりますが、Javaクラスとインターフェースは、実際のプログラムでの有用性と使いやすさのために指定されており、(この場合は)ハンバーガージョイントでPOTUSをモデル化できるようには指定されていません。
おそらく私は学校で行った教科書の定義とC/C++ラボに頭を悩ませています。
別の説明は、定義などの真の目的を間違えたということです。