Java - リスト逆順に巡回、3つの方法

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
codechachaCopyright ©2019 codechacha