すべて

020-004 - キュー(Queue)とデキュー(Deque)

QueueはFIFO(先入れ先出し)のデータ構造で、順序付き処理に使用されます。LinkedListはQueueインターフェイスを実装し、両端での操作が可能です。PriorityQueueは優先度順に要素を取り出します。Dequeは両端での追加・削除が可能な双方向キューで、スタックとしても使用できます。ArrayDequeはDequeの高速な実装です。Dequeを使うことでスタックとキューの両方の機能が統一的に扱えます。offer()、poll()、peek()などの基本操作を理解することが重要です。

QueueとDequeの理解は、順序制御が重要な処理の実装に不可欠です。待ち行列の実装、タスクスケジューリング、幅優先探索など、多様な用途で活用できます。実務では、メッセージキュー、ジョブキュー、イベント処理などで使用されます。たとえば、印刷ジョブをPriorityQueueで管理し、優先度の高いジョブから処理することができます。

この項目を学ぶことで、順序制御を伴うデータ処理が実装でき、アルゴリズムとデータ構造の実践力が向上します。キューの概念が実装として身につきます。前提知識として、Listとコレクションの基本を理解している必要があります。

問題 (8)

無料トライアル
020-004-001

Map応用:単語の出現頻度カウント

<p><strong>この問題では</strong>: 単語のリストを入力として受け取り、<code>HashMap.merge()</code>で各単語の出現頻度をカウントし、頻度の降順(同数の場合...

無料トライアル
020-004-002

Mapの基本:キーと値のペア管理

<p><strong>この問題では</strong>: <code>HashMap&lt;String, Integer&gt;</code>を使ってキーと値のペアを登録・取得し、キーの存在確認を行い...

無料トライアル
020-004-003

Deque:回文チェッカー

# Deque:回文チェッカー **この問題では**: 文字列の各文字をDequeに格納し、前後両端から1文字ずつ取り出して比較することで回文判定を行い、結果を標準出力に表示するプログラムを作成しま...

無料トライアル
020-004-004

デキュー管理:タスクキュー

# デキュー管理:タスクキュー **この問題では**: `ArrayDeque`を使ってタスクキューを管理し、先頭・末尾への追加と先頭からの取り出し操作を行い、結果を標準出力に表示するプログラムを作...

無料トライアル
020-004-005

キュー管理:順番待ちシステム

# キュー管理:順番待ちシステム **この問題では**: `Queue<String>`を使って顧客の順番待ちリストをFIFO(先入れ先出し)順で管理し、待機中の顧客一覧と案内順序を標準出力に表示す...

020-004-006

コレクション:Iteratorで要素を巡回

# <a href="https://javadrill.tech/problems/020">コレクション</a>:Iteratorで要素を巡回 **この問題では**: `Iterator`を使用...

020-004-007

LinkedListをキューとして使う

# LinkedListをキューとして使う **この問題では**: `LinkedList`を`Queue`として使い、3つのタスクをFIFO順に追加・確認・取り出す処理を行い、結果を標準出力に表示...

020-004-008

ArrayDequeでスタックとキューを切り替える

# ArrayDequeでスタックとキューを切り替える **この問題では**: `ArrayDeque<String>`に要素を追加し、スタック(LIFO)とキュー(FIFO)の2種類の順序で全要素...