Java LinkedList getFirst() メソッド
getFirst()は Java のLinkedListクラスが提供するメソッドで、リンクリストの最初の要素を取得するために使用されます。このメソッドはjava.util.LinkedListクラスに属し、リンクリストのデータ構造を操作する基本的なメソッドの一つです。
メソッド宣言
public E getFirst()
戻り値
リンクリストの最初の要素(先頭要素)を返します。
メソッドの詳細
機能説明
getFirst()メソッドは、リンクリストの最初の要素(先頭要素)を取得しますが、削除しません。このメソッドはpeekFirst()メソッドと同じ機能ですが、リンクリストが空の場合の動作が異なります。
時間計算量
O(1) - LinkedList は内部で先頭ノードへの参照を保持しているため、直接アクセスできます。使用例
基本的な使い方
例
import java.util.LinkedList;
public class LinkedListExample {
public static void main(String[] args) {
// LinkedList を作成
LinkedList<String> fruits = new LinkedList<>();
// 要素を追加
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
// getFirst() を使用して最初の要素を取得
String firstFruit = fruits.getFirst();
System.out.println("最初の果物は: " + firstFruit); // 出力: 最初の果物は: Apple
}
}
public class LinkedListExample {
public static void main(String[] args) {
// LinkedList を作成
LinkedList<String> fruits = new LinkedList<>();
// 要素を追加
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
// getFirst() を使用して最初の要素を取得
String firstFruit = fruits.getFirst();
System.out.println("最初の果物は: " + firstFruit); // 出力: 最初の果物は: Apple
}
}
類似メソッドとの比較
例
LinkedList<Integer> numbers = new LinkedList<>();
numbers.add(10);
numbers.add(20);
// getFirst() と peekFirst() は、空でないリンクリストでは同じ動作をします
System.out.println(numbers.getFirst()); // 出力: 10
System.out.println(numbers.peekFirst()); // 出力: 10
// ただし、リンクリストが空の場合の動作は異なります
numbers.clear();
// System.out.println(numbers.getFirst()); // NoSuchElementException をスロー
System.out.println(numbers.peekFirst()); // 出力: null
numbers.add(10);
numbers.add(20);
// getFirst() と peekFirst() は、空でないリンクリストでは同じ動作をします
System.out.println(numbers.getFirst()); // 出力: 10
System.out.println(numbers.peekFirst()); // 出力: 10
// ただし、リンクリストが空の場合の動作は異なります
numbers.clear();
// System.out.println(numbers.getFirst()); // NoSuchElementException をスロー
System.out.println(numbers.peekFirst()); // 出力: null
注意点
例外処理
リンクリストが空の場合に呼び出すと、getFirst()メソッドは例外をスローします。NoSuchElementException。したがって、使用前にリンクリストが空でないか確認することをお勧めします:
例
if (!myList.isEmpty()) {
E element = myList.getFirst();
// 要素を処理
} else {
System.out.println("リンクリストは空です");
}
E element = myList.getFirst();
// 要素を処理
} else {
System.out.println("リンクリストは空です");
}
代替メソッド
リンクリストが空の場合に戻り値を返したい場合は、null例外をスローする代わりに、次のpeekFirst()メソッド:
例
E element = myList.peekFirst(); // リンクリストが空の場合は null を返す
実際の応用シーン
シーン 1:キューの処理
例
LinkedList<Order> orderQueue = new LinkedList<>();
// 注文を追加...
// キュー内の最初の注文を取得して処理する
if (!orderQueue.isEmpty()) {
Order firstOrder = orderQueue.getFirst();
processOrder(firstOrder);
}
// 注文を追加...
// キュー内の最初の注文を取得して処理する
if (!orderQueue.isEmpty()) {
Order firstOrder = orderQueue.getFirst();
processOrder(firstOrder);
}
シーン 2:スタック操作の実装
LinkedList は通常キューとして使用されますが、スタック(後入れ先出し)を実装するためにも使用できます:
例
LinkedList<String> stack = new LinkedList<>();
stack.push("First"); // addFirst() と同等
stack.push("Second");
stack.push("Third");
// スタックの先頭要素を削除せずに取得する
String top = stack.getFirst(); // "Third" を返す
stack.push("First"); // addFirst() と同等
stack.push("Second");
stack.push("Third");
// スタックの先頭要素を削除せずに取得する
String top = stack.getFirst(); // "Third" を返す
まとめ
getFirst()メソッドはLinkedListクラス内のシンプルで実用的なメソッドで、リンクリストの最初の要素にすばやくアクセスできます。それとのpeekFirst()違いを覚えておいてください。実際のニーズに応じてどちらのメソッドを使用するかを選択してください。空になる可能性がある場合は、使用前に空チェックを行うか、次のメソッドの使用を検討してください。peekFirst()使用することで、実行時例外を回避できます。
Java LinkedList