【Java】reverseを使ってリスト(List)の要素の順番を逆にする!
(*このページは2020年8月19日に更新されました。)
リスト(List)の要素の順番を逆にするにはCollectionsクラスのreverseメソッドを使用します。
Collectionsクラスののreverseメソッドは、指定されたリストに格納されている要素の順番を逆にするメソッドです。
そのため、reverse()メソッドはリストに格納した要素を後ろから取り出したい場合に使わます。
また、Javaにはリストなどのデータを反転させる方法がいくつかありますが、reverseメソッドを使った方法が簡単で一番分かりやすいと思います。
今回はCollectionsクラスのreverseメソッドを使って以下の場合にリスト(List)の要素の順番を逆にしてみます。
⚫︎ リストの要素が存在し、順番を逆にする場合
⚫︎ リストの要素が空で順番を逆にする場合
また、多次元リスト(List)の要素の順番を逆にする場合も紹介していきます。
⚫︎ 二次元リストの要素の順番を逆にする場合
⚫︎ 三次元リストの要素の順番を逆にする場合
目次
reverseメソッドとは
Collectionsクラスのreverseメソッドは、指定されたリストに格納されている要素の順番を逆にするメソッドとなります。
reverseメソッドの書き方
reverseメソッドの構文は下記となります。
1 |
Collections.reverse(リスト); |
パラメータ
⚫︎ リスト:
要素の順番を逆にしたいリストを指定する
reverseメソッドの()の中にリストを指定することで、指定したリストの要素の順番を逆にします。
リスト(List)の要素の順番を逆にするサンプルコード
リスト(List)の要素を逆にするサンプルコードを紹介します。
リストに要素が存在する場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
//リストの要素の順序を逆にする import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) throws Exception { //リストを作成 List<String> list1 = new ArrayList<String>(); //リストに要素を追加 list1.add("福井県"); list1.add("滋賀県"); list1.add("三重県"); list1.add("奈良県"); list1.add("和歌山県"); System.out.println("・ 実行前"); System.out.println(list1); // リストの要素の順序を逆にする Collections.reverse(list1); System.out.println("・ 実行後"); System.out.println(list1); } } |
出力結果
・ 実行前
[福井県, 滋賀県, 三重県, 奈良県, 和歌山県]
・ 実行後
[和歌山県, 奈良県, 三重県, 滋賀県, 福井県]
reverseメソッドによってリストの要素を逆にしてリストを返しています。
リストの要素が空である場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//リストの要素の順序を逆にする import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) throws Exception { // リストを作成 List<String> list2 = new ArrayList<String>(); System.out.println("・ 実行前"); System.out.println(list2); // リストの要素の順序を逆にする Collections.reverse(list2); System.out.println("・ 実行後"); System.out.println(list2); } } |
出力結果
・ 実行前
[]
・ 実行後
[]
リストに要素が存在しない場合は空のリストをそのまま返します。
多次元リストの要素の順番を逆にするサンプルコード
多次元リストの要素の順番を逆にするサンプルコードを紹介します。
二次元リストの要素の順番を逆にする場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) throws Exception { //二次元リストの生成 List<List<Integer>> listA = new ArrayList<List<Integer>>(); for(int j = 0; j < 3; j++){ //リストの中身を生成(一時元) listA.add(new ArrayList<Integer>()); for(int k= 0; k < 3; k++) { listA.get(j).add(j + k); } } System.out.println("・ 実行前"); System.out.println(listA); Collections.reverse(listA); System.out.println("・ 実行後"); System.out.println(listA); } } |
出力結果
・ 実行前
[[0, 1, 2], [1, 2, 3], [2, 3, 4]]
・ 実行後
[[2, 3, 4], [1, 2, 3], [0, 1, 2]]
reverseメソッドで二次元リストの要素の順番を逆にしています。
三次元リストの要素の順番を逆にする場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) throws Exception { //三次元リストの生成 List<List<List<Integer>>> listB = new ArrayList<List<List<Integer>>>(); for(int i = 0;i < 3; i++){ //リストの中身を生成(二次元) listB.add(new ArrayList<List<Integer>>()); for(int j = 0; j < 3; j++){ //リストの中身を生成(一次元) listB.get(i).add(new ArrayList<Integer>()); for(int k= 0; k < 3; k++){ listB.get(i).get(j).add(i + j + k); } } } System.out.println("・ 実行前"); System.out.println(listB); Collections.reverse(listB); System.out.println("・ 実行後"); System.out.println(listB); } } |
出力結果
・ 実行前
[[[0, 1, 2], [1, 2, 3], [2, 3, 4]], [[1, 2, 3], [2, 3, 4], [3, 4, 5]], [[2, 3, 4], [3, 4, 5], [4, 5, 6]]]
・ 実行後
[[[2, 3, 4], [3, 4, 5], [4, 5, 6]], [[1, 2, 3], [2, 3, 4], [3, 4, 5]], [[0, 1, 2], [1, 2, 3], [2, 3, 4]]]
reverseメソッドで三次元リストの要素の順番を逆にしています。
リストの要素を後ろから取り出すサンプルコード
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) throws Exception { //リストを作成 List<String> list3 = new ArrayList<String>(); //リストに要素を追加 list3.add("福井県"); list3.add("滋賀県"); list3.add("三重県"); list3.add("奈良県"); list3.add("和歌山県"); Collections.reverse(list3); for(String str : list3) { System.out.println(str); } } } |
出力結果
和歌山県
奈良県
三重県
滋賀県
福井県
reverse()メソッドを使用した後、拡張for文を使用することでリストの要素を後ろから取り出すことができます。
今回のポイント
reverseでリストの要素を逆にする
リストの要素の順序を逆にするには Collectionsクラスのreverseメソッドを使用する。
⚫︎ Collectionsクラスのreverseメソッドでリストの要素の順序を逆にする
⚫︎ reverseメソッド新しいリストが作成されるのではなく、既存のリスト内の要素の順番を逆にする(既存リストのバックアップは取らない)
⚫︎ リストの要素の順序を逆にして取り出すには、「拡張for文」を使用する
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。