LinkedList クラスは、Java でよく使用されるコレクション クラスの 1 つで、二重にリンクされたリスト構造です。 LinkedList クラスは、追加、削除、その他の操作を含む、リンク リストを操作するためのメソッドを多数提供します。その中でも、removeFirst() メソッドは LinkedList クラスの重要なメソッドです。この記事では、このメソッドの機能を分析し、読者がこのメソッドの使用法をよりよく理解できるように、対応するコード例を提供します。
removeFirst() メソッドは、リンク リストの先頭から最初の要素を削除し、その要素の値を返すために使用されます。リンクされたリストが空の場合、このメソッドは NoSuchElementException をスローします。このメソッドの詳細な定義は次のとおりです。
public E removeFirst() { if (size == 0) throw new NoSuchElementException(); final Node<E> f = first; first = f.next; f.next = null; size--; return f.item; }
上記のコードからわかるように、 RemoveFirst() メソッドは非常に簡単です。以下では、このメソッドの主な機能を段階的に分析します。
(1) リンク リストが空かどうかを判断します。
メソッドの先頭で、if ステートメントを使用して、空かどうかを判断します。リンクされたリストのサイズは 0 です。リンクされたリストが空の場合、NoSuchElementException がスローされます。これは、removeFirst() メソッドの最初のステップです。
(2) ヘッド ノードの保存
前述したように、removeFirst() メソッドの主な機能は、リンク リストのヘッド ノードを削除することです。したがって、リンク リストの削除操作を実行する前に、最初のノードを保存する必要があります。
(3) 先頭ノードのポインティングを変更する
連結リストの先頭から最初の要素を削除するには、先頭ノードのポインティングを変更する必要があります。この方法では、ヘッド ノードの後継ノードをヘッド ノードに割り当てます。このようにして、ヘッド ノードは元のリンク リストの 2 番目のノードを指します。
(4) 削除したノードの参照をクリアする
Javaは自動ガベージコレクション機構を採用しているため、ノード削除後もリサイクルされていないメモリが残ります。この部分はメモリがメモリ空間を占有しているため、長期間リサイクルされないとメモリが蓄積され、この現象によりプログラムのメモリ使用量が高くなりすぎます。したがって、この状況の発生を回避するには、削除されたノード参照をメモリから削除して、ノードが占有しているメモリを解放する必要があります。
(5) リンクリストの要素数を変更する
要素を削除した後は、それに応じてリンクリストの要素数を1減らす必要があります。
(6) 削除された要素の値を返す
最後に、このメソッドは削除されたノードの値を返します。 2 番目のステップでヘッド ノードを保存したので、保存したヘッド ノードを直接返すことができます。
import java.util.LinkedList; public class RemoveFirstTest { public static void main(String[] args) { LinkedList<String> list = new LinkedList<>(); list.add("A"); list.add("B"); list.add("C"); System.out.println("Before remove first: " + list); String first = list.removeFirst(); System.out.println("Deleted element: " + first); System.out.println("After remove first: " + list); } }上記のコードを実行すると、出力結果は次のようになります。
Before remove first: [A, B, C] Deleted element: A After remove first: [B, C]出力結果からわかるように、このメソッドはリンク リストの最初の要素を正常に削除し、正しく返します。要素の値。
以上がJavaドキュメントの解釈: LinkedListクラスのremoveFirst()メソッド関数の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。