リストを逆方向に繰り返す
1概要
このクイックチュートリアルでは、Javaのリストを逆方向に繰り返すことができるさまざまな方法について学習します。
** 2 Javaの
イテレーター
3コアJava
を使用した逆方向の反復
3.1. 逆の
for
ループ
最も単純な実装は、リストの最後の要素から開始するために
for
ループを使用し、リストの先頭に到達するときにインデックスを減少させることです。
for (int i = list.size(); i-- > 0; ) {
System.out.println(list.get(i));
}
3.2.
ListIterator
-
ListIterator
を使用して、リスト内の要素を反復処理できます。
リストのサイズを
ListIterator
のインデックスとして指定すると、リストの末尾を指すイテレータが得られます。
ListIterator listIterator = list.listIterator(list.size());
この反復子により、リストを逆方向にたどることができます。
while (listIterator.hasPrevious()) {
System.out.println(listIterator.previous());
}
3.3.
Collections.reverse()
-
Javaのhttps://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#reverse(java.util.List)[
Collections
]クラスは、順序を逆にする静的メソッドを提供します。指定されたリストの要素の数:**
Collections.reverse(list);
次に、逆のリストを使って元の要素を逆方向に反復処理できます。
for (String item : list) {
System.out.println(item);
}
ただし、この方法では、要素の順序をその場で変更することによって実際のリストが逆になるため、多くの場合は望ましくない場合があります。
4 Apacheの
ReverseListIterator
を使用して逆方向に反復する
-
Apache Commons Collections
ライブラリには
ReverseListIterator
リスト内の要素を実際に元に戻すことなくループできるようにするクラス。**
始める前に、https://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22org.apache.commons%22%20AND%20a%3A%22commonsから最新の依存関係をインポートする必要があります。 -collections4%22[メイヴン中央]:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
元のリストをコンストラクタのパラメータとして渡すことで、新しい
ReverseListIterator
を作成できます。
ReverseListIterator reverseListIterator = new ReverseListIterator(list);
それから、この反復子を使ってリストを逆方向にたどることができます。
while (reverseListIterator.hasNext()) {
System.out.println(reverseListIterator.next());
}
5 Guavaの
Lists.reverse()
を使用して逆方向に反復する
同様に、
Google Guavaライブラリの
https://google.github.io/guava/releases/snapshot-jre/api/docs/com/google/common/collect/listに、静的な
reverse()
メソッドもあります。 html#reverse-java.util.List-[Lists]
class
これは、提供されたリストの逆のビューを返します。
最新のGuavaバージョンはhttps://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22com.google.guava%22%20AND%20a%3A%22guava%22[Mavenで見つけることができます中央]:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>25.0</version>
</dependency>
Lists
クラスで静的メソッド
reverse()
を呼び出すと、リストが逆になります。
List<String> reversedList = Lists.reverse(list);
次に、反転リストを使用して、元のリストを逆方向に反復処理できます。
for (String item : reversedList) {
System.out.println(item);
}
このメソッドは、元のリストの要素を逆の順序で持つ新しいリストを返します
6. 結論
この記事では、Javaのリストを逆方向に反復するさまざまな方法について説明しました。私たちは、人気のあるサードパーティのライブラリを使用するだけでなく、コアJavaを使用していくつかの例を経験しました。
この記事のソースコードと関連するテストケースはhttps://github.com/eugenp/tutorials/tree/master/core-java-collections[GitHubで利用可能]です。