Java でリンクリストを反復処理する
-
Java で
for
ループを使用してリンクリストを反復処理する -
Java で拡張された
for
ループを使用してリンクリストを反復処理する -
while
ループを使用してリンクリストを反復処理する -
Java の
Iterator
クラスを使用してリンクリストを反復する -
Java 8
Streams
を使用してリンクリストを反復する
リンクリストは、データ要素の線形で順序付けられたコレクションです。要素の配置は、メモリ内の至る所にある、またはランダムな場所にあります。リンクリストのデータ構造は、ノードを使用して接続されます。ノード
は、シーケンス内の次の要素のメモリ位置であるデータフィールドと参照リンクを保持します。
リンクリスト要素は連続していないメモリ位置に格納され、最後のノードには null 参照へのポインタが含まれています。
リンクリストを反復処理する方法はたくさんあります。以下に説明するいくつかの方法があります。
Java で for
ループを使用してリンクリストを反復処理する
LinkedList
クラスは、以下のコード例の new
キーワードを使用してインスタンス化されます。LinkedList
クラスの add()
メソッドは、リストに要素を追加します。add
メソッドは、指定された要素をこのリストの最後に追加します。このメソッドは、addLast
メソッドと同等です。要素がリストに正常に追加されると、メソッドは true
を返します。
リストの作成後、for
ループを使用してリストを反復処理します。以下のコードでは、int i=0
はカウンター変数のインスタンス化です。変数がリストのサイズよりも小さい必要があることを示す条件を使用します。また、リストのサイズは、size()
メソッドを使用して計算されます。最後に、変数の値が 1 ずつ増加します。この完全なプロセスは、変数値がリストのサイズを超えるまで実行されます。
package linkedList;
import java.util.LinkedList;
public class IterateLinkedListUsingForLoop {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("First");
list.add("Second");
System.out.println("Iterating the list using for-loop");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
上記のプログラムは、以下のように出力を生成します。
Iterating the list using for-loop
First
Second
Java で拡張された for
ループを使用してリンクリストを反復処理する
拡張された for
ループは for-each
ループとも呼ばれ、for
ループの一種です。
以下のコードでは、リンクリストオブジェクトをインスタンス化する必要があります。次に、いくつかの要素(たとえば、String オブジェクト)を追加する必要があります。ここで繰り返しますが、この場合は for-each
を使用します。
package linkedList;
import java.util.LinkedList;
public class IteratingLinkedListUsingForEach {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("First");
list.add("Second");
for (String temp : list) {
System.out.println(temp);
}
}
}
プログラムの出力は、最初のプログラムの出力と同じです。
while
ループを使用してリンクリストを反復処理する
インスタンス化とリストプロセスへの要素の追加は、前述のすべての点で類似しています。
以下の例では、カウンター変数値は while
ループの外側で 0 にインスタンス化されます。while
ループ構文には、インスタンス化の場所がありません。次に、条件を適用します。これは、変数が指定されたリストのサイズよりも小さいかどうかをチェックします。true
を返し、println()
関数が実行されます。その後、カウンター変数をインクリメントする必要があります。このプロセスは、変数がリストサイズより大きくなるまで繰り返されます。
package linkedList;
public class IteratingLinkedListUsingWhileLoop {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("First");
list.add("Second");
int i = 0;
while (i < list.size()) {
System.out.println(list.get(i));
i++;
}
}
}
Java の Iterator
クラスを使用してリンクリストを反復する
イテレータ
は、コレクション
オブジェクトのループで動作するクラスです。これらは、Array
、ArrayList
、LinkedList
などです。コレクションオブジェクトをループするため、これをイテレータ
と呼びます。Iterator クラスのメソッドを使用して、Collections
オブジェクトを反復処理する必要があります。
iterator()
メソッドを使用して、任意のコレクションの Iterator
を取得します。hasNext
メソッドは、リストに more-要素があるかどうかをチェックします。反復にさらに要素が存在する場合は、true
を返します。
next
メソッドは、ループ内の次の要素を取得します。反復で次に存在するオブジェクトを返し、リストに要素が存在しない場合は NoSuchElementException
をスローします。
以下のコードは、Iterator クラスとそのメソッドを示しています。
package linkedList;
public class IteratingLinkedListUsingIterator {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("First");
list.add("Second");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
Java 8 Streams
を使用してリンクリストを反復する
stream
は常にコレクション
オブジェクト上に形成されます。以下のプログラムでは、同じために stream
メソッドを使用します。関数は、ストリーム関数のチェーン全体に適用されます。forEach
はターミナル
操作です。これは、端末機能の後で操作を実行できないことを意味します。それは消費者
ストリームを取り、このストリームは要素を放出せず、むしろそれらを消費します。
以下のコードは、Java 8 ストリームの使用と、リストを反復処理するためのそれらの関数を示しています。
package linkedList;
public class IteratingLinkedListUsingStreams {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<>();
list.add("First");
list.add("Second");
list.stream().forEach((element) -> { System.out.println(element); });
}
}
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn