for文、繰り返し文でリストを巡回するとき、リストの逆順で巡回する方法を紹介します。
1. for文を利用した方法
最も基本的で直感的な方法で、繰り返しステートメントでリストを巡回するときに最も高いIndexからIndex 0への巡回は、逆順で要素にアクセスできます。
import java.util.*;
public class Example2 {
public static void main(String[] args) {
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c", "d"));
for (int i = list.size() - 1; i > -1; i--) {
System.out.println(list.get(i));
}
}
}
Output:
d
c
b
a
2. Collections.reverse() を使った方法
Collections.reverse()
は引数に渡されたリストの順序を逆順に変更します。これにより元のリストが変更されますが、変更を望まない場合は最初にリストをコピーし、コピーされたリストの順序を変更して巡回するだけです。
import java.util.*;
public class Example1 {
public static void main(String[] args) {
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c", "d"));
List<String> reversedList = new ArrayList<>(list);
Collections.reverse(reversedList);
reversedList.forEach(s -> System.out.println(s));
System.out.println("list: " + list);
System.out.println("reversedList: " + reversedList);
}
}
Output:
d
c
b
a
list: [a, b, c, d]
reversedList: [d, c, b, a]
3. ListIteratorを使った方法
ListIteratorは、双方向に巡回することを可能にするオブジェクトです。
以下のようにListIteratorを作成し、 hasPrevious()
で逆順方向に読み取れる要素があることを確認し、 previous()
で要素を取得できます。
import java.util.*;
public class Example {
public static void main(String[] args) {
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c", "d"));
ListIterator<String> itr = list.listIterator(list.size());
while (itr.hasPrevious()) {
System.out.println(itr.previous());
}
}
}
Output:
d
c
b
a
Related Posts
- Java - BufferedReaderでファイルを読む
- Java - BufferedWriterでファイルを書き込む
- Java - BigIntegerの範囲、比較、演算、キャスト
- Java charAt()関数を学ぶ
- Java contains()で文字(大文字と小文字のX)を含める
- Java - Set(HashSet)を配列に変換する
- Java - 文字列の最初の文字、最後の文字を確認する
- Java - 文字列を1文字ずつ切り捨てる
- Java - 文字列の単語数を取得する
- Java - 1秒ごとに繰り返し実行
- Java - 配列をSet(HashSet)に変換する
- Java - 複数のSet(HashSet)を組み合わせる
- Java - コマンドライン引数の入力を受け取る
- Java - リスト逆順に巡回、3つの方法
- Java - 特定の条件でリストをフィルタリングする3つの方法
- Java - HashMapすべての要素の合計、平均計算
- Java - 特定の条件でHashMapをフィルタリングする
- Java - シングルトンパターンの実装
- Java - 数字の左側にゼロを埋める
- Java - String配列の初期化方法
- Java - ソートされた順序で Map(HashMap) 巡回