では、ArrayListを使ったソート練習問題をレベル別に作りました。配列より柔軟に扱えるので、実践的な練習になります。
レベル1(基礎:昇順ソート)
問題
ArrayList<Integer> に {5, 2, 8, 1, 3} を入れて、昇順(小さい順)に並べ替えて表示してください。
ステップ解説
ArrayListを作って数値を追加する。Collections.sort(list)を使う。- 結果を表示する。
解答コード
import java.util.*;
public class Level1 {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<>(Arrays.asList(5, 2, 8, 1, 3));
Collections.sort(nums);
System.out.println(nums); // [1, 2, 3, 5, 8]
}
}
Javaレベル2(応用:降順ソート)
問題
ArrayList<Integer> に {10, 4, 7, 2, 9} を入れて、降順(大きい順)に並べ替えて表示してください。
ステップ解説
Collections.sort(list)で昇順に並べる。Collections.reverse(list)で逆順にする。
解答コード
import java.util.*;
public class Level2 {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<>(Arrays.asList(10, 4, 7, 2, 9));
Collections.sort(nums); // 昇順
Collections.reverse(nums); // 逆順にする
System.out.println(nums); // [10, 9, 7, 4, 2]
}
}
Javaレベル3(文字列ソート)
問題
ArrayList<String> に {"Banana", "apple", "Orange", "grape"} を入れて、アルファベット順(A→Z)に並べ替えて表示してください。大文字小文字は区別しないこと。
ステップ解説
Collections.sort(list, String.CASE_INSENSITIVE_ORDER)を使う。- 結果を表示する。
解答コード
import java.util.*;
public class Level3 {
public static void main(String[] args) {
ArrayList<String> fruits = new ArrayList<>(Arrays.asList("Banana", "apple", "Orange", "grape"));
Collections.sort(fruits, String.CASE_INSENSITIVE_ORDER);
System.out.println(fruits); // [apple, Banana, grape, Orange]
}
}
Javaレベル4(Comparatorで降順)
問題
ArrayList<Integer> に {15, 3, 27, 9, 12} を入れて、Comparatorを使って降順に並べ替えてください。
ステップ解説
Collections.sort(list, Comparator.reverseOrder())を使う。- 結果を表示する。
解答コード
import java.util.*;
public class Level4 {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<>(Arrays.asList(15, 3, 27, 9, 12));
Collections.sort(nums, Comparator.reverseOrder());
System.out.println(nums); // [27, 15, 12, 9, 3]
}
}
Javaレベル5(チャレンジ:オブジェクトソート)
問題
生徒の名前と点数を持つクラス Student を作り、ArrayList<Student> を「点数の高い順」に並べ替えて表示してください。
ステップ解説
Studentクラスを作り、nameとscoreを持たせる。ArrayList<Student>にデータを入れる。Collections.sort(list, Comparator.comparing(Student::getScore).reversed())を使う。
解答コード
import java.util.*;
class Student {
String name;
int score;
Student(String name, int score) {
this.name = name;
this.score = score;
}
public int getScore() { return score; }
public String toString() { return name + ":" + score; }
}
public class Level5 {
public static void main(String[] args) {
ArrayList<Student> students = new ArrayList<>();
students.add(new Student("Sato", 70));
students.add(new Student("Tanaka", 85));
students.add(new Student("Suzuki", 60));
students.add(new Student("Kato", 90));
Collections.sort(students, Comparator.comparing(Student::getScore).reversed());
System.out.println(students);
// 出力: [Kato:90, Tanaka:85, Sato:70, Suzuki:60]
}
}
Java✨ まとめ
- レベル1: 昇順(基本)
- レベル2: 降順(reverse)
- レベル3: 文字列(大小無視)
- レベル4: Comparatorで降順
- レベル5: オブジェクトのソート
これで、配列から一歩進んで ArrayListのソート を段階的に練習できます。
