[Java]for文でリスト(List)を逆順にソートするには?

Java

どうも、ちょげ(@chogetarou)です。

for文を使ってリスト(List)を逆順にソートする方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

for文を使ってリスト(List)を逆順にソートするには、add()とremove()を使います。

まず、for文をリスト(List)の長さでループします。

次に、ループ処理で、リストからadd()を呼び出します。

add()の第1引数にループ変数を指定し、第2引数でリストからremove()を呼び出します。

そして、remove()の引数にリストの末尾のインデックスを指定します。

//list=対象のリスト
for (int i = 0, j = list.size() -1;  i < j; i++) {
    list.add(i, list.remove(j));
}

上記のfor文は、ループしたリスト(List)を逆順にソートします。

逆順にソートした新しい配列を生成したい場合は、まず、逆順用のリストを用意します。

次に、リストを長さでforループします。

ループ処理でリストからadd()を呼び出します。

ループ処理で元のリストの末尾から用意したリストに要素を追加します。

//逆順にソートしたリストを生成
ArrayList<T> reverse = new ArrayList<T>(count);

for (int i = 0;  i < arr.size(); i++) {
    reverse.add(i, arr.get(arr.size() - 1 - i));
}

使用例

import java.util.ArrayList;
    
public class Main {

    public static void main(String[] args) throws Exception {
        ArrayList<Integer> nums = new ArrayList<Integer>(5);
        nums.add(1);
        nums.add(2);
        nums.add(3);
        nums.add(4);
        nums.add(5);
        
        for (int i = 0, j = nums.size() -1;  i < j; i++) {
            nums.add(i, nums.remove(j));
        }
        
        System.out.println(nums);
    }
}
出力:
[5, 4, 3, 2, 1]

コメント

タイトルとURLをコピーしました