Java LinkedList poll() メソッド
poll()メソッドは Java のLinkedListLinkedList クラスが提供する非常に便利なメソッドで、リストの最初の要素(先頭要素)を取得して削除します。このメソッドはQueueQueue インターフェースの一部であり、LinkedListこのインターフェースを実装しているため、キューとして使用できます。
メソッドの構文:
public E poll()
戻り値:
- リストが空でない場合、リストの最初の要素を返します。
- リストが空の場合は null を返します。
null
メソッドの特徴
類似メソッドとの比較
Java のLinkedListQueue 内には、先頭要素を取得して削除するための類似メソッドがいくつかあります:
| メソッド | 動作の説明 | 空リストの場合の動作 |
|---|---|---|
| poll() | 先頭要素を取得して削除する | null を返す |
| remove() | 先頭要素を取得して削除する | NoSuchElementException をスローする |
| pop() | 先頭要素を取得して削除する(スタック操作) | NoSuchElementException をスローする |
| pollFirst() | 最初の要素を取得して削除する(poll() と同じ) | null を返す |
時間計算量
poll()このメソッドの時間計算量は O(1) です。リストの最初の要素を削除して返すだけで、リスト全体を走査する必要がないためです。
使用例
基本的な使い方
例
import java.util.LinkedList;
public class PollExample {
public static void main(String[] args) {
// LinkedList を作成
LinkedList<String> fruits = new LinkedList<>();
// 要素を追加
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
System.out.println("元のリスト: " + fruits); // 出力: [Apple, Banana, Cherry]
// poll() メソッドを使用
String firstFruit = fruits.poll();
System.out.println("削除された要素: " + firstFruit); // 出力: Apple
System.out.println("更新後のリスト: " + fruits); // 出力: [Banana, Cherry]
}
}
public class PollExample {
public static void main(String[] args) {
// LinkedList を作成
LinkedList<String> fruits = new LinkedList<>();
// 要素を追加
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
System.out.println("元のリスト: " + fruits); // 出力: [Apple, Banana, Cherry]
// poll() メソッドを使用
String firstFruit = fruits.poll();
System.out.println("削除された要素: " + firstFruit); // 出力: Apple
System.out.println("更新後のリスト: " + fruits); // 出力: [Banana, Cherry]
}
}
空リストの処理
例
import java.util.LinkedList;
public class EmptyListExample {
public static void main(String[] args) {
LinkedList<String> emptyList = new LinkedList<>();
// 空リストに対して poll() を使用
String result = emptyList.poll();
System.out.println("結果: " + result); // 出力: null
}
}
public class EmptyListExample {
public static void main(String[] args) {
LinkedList<String> emptyList = new LinkedList<>();
// 空リストに対して poll() を使用
String result = emptyList.poll();
System.out.println("結果: " + result); // 出力: null
}
}
キュー操作での使用
例
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
// LinkedList を Queue として使用
Queue<Integer> queue = new LinkedList<>();
// エンキュー操作
queue.offer(10);
queue.offer(20);
queue.offer(30);
System.out.println("キューの内容: " + queue); // 出力: [10, 20, 30]
// デキュー操作
while (!queue.isEmpty()) {
int num = queue.poll();
System.out.println("処理: " + num);
}
System.out.println("キューの最終状態: " + queue); // 出力: []
}
}
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
// LinkedList を Queue として使用
Queue<Integer> queue = new LinkedList<>();
// エンキュー操作
queue.offer(10);
queue.offer(20);
queue.offer(30);
System.out.println("キューの内容: " + queue); // 出力: [10, 20, 30]
// デキュー操作
while (!queue.isEmpty()) {
int num = queue.poll();
System.out.println("処理: " + num);
}
System.out.println("キューの最終状態: " + queue); // 出力: []
}
}
実際の応用シーン
poll()このメソッドは以下のシナリオで特に役立ちます:
- キュー処理:LinkedList を
LinkedListキューとして使用する場合、poll()標準的なデキュー操作です。 - タスクスケジューリング:タスクリストを処理し、毎回最初のタスクを取り出して実行します。
- 幅優先探索:グラフや木の走査アルゴリズムにおいて、キューから次に処理するノードを取り出すために使用されます。
- メッセージ処理:メッセージキューから次のメッセージを取り出して処理します。
注意事項
- 空リストの処理:remove() メソッド
remove()とは異なり、poll()リストが空の場合、例外をスローせず、null を返します。nullこのため、リストが空かどうか不明な場合に使用するのに適しています。 - ジェネリック型:戻り値の型を正しく処理し、ClassCastException を回避します。
ClassCastException。 - 並行環境:
LinkedListスレッドセーフではありません。マルチスレッド環境で使用する場合は、同期を考慮する必要があります。
poll() メソッドを習得することで、poll()より効果的にLinkedListLinkedList をキューとして使用し、より簡潔で堅牢な Java コードを書くことができます。
Java LinkedList