Java LinkedList addLast() メソッド
addLast()このメソッドは Java のLinkedListLinkedList クラスが提供する一般的なメソッドで、リンクリストの末尾に要素を追加するために使用します。このメソッドはキュー(FIFO)データ構造の実装に特に役立ちます。
public void addLast(E e)
メソッドのパラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
| e | E | リンクリストの末尾に追加する要素 |
戻り値
このメソッドは戻り値を持ちません(voidvoid 型)。
メソッドの特徴
- 時間計算量:O(1) - なぜなら
LinkedListLinkedList は先頭ノードと末尾ノードを指すポインタを保持しているため、末尾に直接要素を追加できます。 - スレッドセーフではない:このメソッドはスレッドセーフではありません。マルチスレッド環境で使用する場合は外部同期が必要です。
- null 値を許可:リンクリストに
nullnull 要素を追加できます。 - 容量制限:
LinkedList容量制限はなく、メモリが尽きるまで要素を追加し続けることができます。
使用例
基本的な使い方
例
import java.util.LinkedList;
public class LinkedListDemo {
public static void main(String[] args) {
// LinkedList を作成
LinkedList<String> fruits = new LinkedList<>();
// addLast() メソッドを使用して要素を追加
fruits.addLast("Apple");
fruits.addLast("Banana");
fruits.addLast("Cherry");
// リンクリストを出力
System.out.println(fruits); // 出力: [Apple, Banana, Cherry]
}
}
public class LinkedListDemo {
public static void main(String[] args) {
// LinkedList を作成
LinkedList<String> fruits = new LinkedList<>();
// addLast() メソッドを使用して要素を追加
fruits.addLast("Apple");
fruits.addLast("Banana");
fruits.addLast("Cherry");
// リンクリストを出力
System.out.println(fruits); // 出力: [Apple, Banana, Cherry]
}
}
add() メソッドとの比較
例
LinkedList<Integer> numbers = new LinkedList<>();
// addLast() と add() は LinkedList では同等です
numbers.add(1); // 末尾に追加
numbers.addLast(2); // 末尾に追加
System.out.println(numbers); // 出力: [1, 2]
// addLast() と add() は LinkedList では同等です
numbers.add(1); // 末尾に追加
numbers.addLast(2); // 末尾に追加
System.out.println(numbers); // 出力: [1, 2]
例外ケース
addLast()このメソッドは以下の例外をスローする可能性があります:
- ClassCastException- 指定された要素のクラスが、その要素をこのリストに追加することを許可していない場合
- NullPointerException- リストが null 要素を許可しておらず、指定された要素が null の場合
- IllegalArgumentException- この要素の何らかの属性が、その要素をこのリストに追加することを許可していない場合
実際の適用シーン
- キューの実装:
addLast()キューのエンキュー操作の実装に使用できます - ログ記録:イベントを時系列で記録する場合に、このメソッドを使用できます
- 履歴記録:元に戻す/やり直す機能を実装する際に、リンクリストを使用して操作履歴を保存できます
例
// シンプルなキューの実装例
LinkedList<String> queue = new LinkedList<>();
// エンキュー操作
queue.addLast("Task1");
queue.addLast("Task2");
queue.addLast("Task3");
// デキュー操作
String firstTask = queue.removeFirst();
System.out.println("Processing: " + firstTask);
LinkedList<String> queue = new LinkedList<>();
// エンキュー操作
queue.addLast("Task1");
queue.addLast("Task2");
queue.addLast("Task3");
// デキュー操作
String firstTask = queue.removeFirst();
System.out.println("Processing: " + firstTask);
注意事項
- 頻繁なランダムアクセス操作の場合、
ArrayListArrayList は LinkedList よりLinkedList効率的な場合があります。 - Java では、
LinkedListLinkedList は Deque インターフェースを実装しているため、Dequeoffer() メソッドもofferLast()使用して同様の機能を実現できます。 - リンクリストが空の場合、
addLast()追加された要素をリンクリストの最初で唯一の要素として扱います。
まとめ
LinkedListのaddLast()このメソッドは、リンクリストの末尾に効率的に要素を追加するための、シンプルながら強力なツールです。このメソッドの動作原理と適用シーンを理解することで、コレクションの末尾に頻繁に要素を追加する必要がある場合に、適切なデータ構造を選択するのに役立ちます。
Java LinkedList