Java | 複数の入力をまとめて List に格納するサンプル

Java Java
スポンサーリンク

前回の「リストから合計・平均・最大・最小を計算する」サンプルをさらに発展させて、ソート(昇順・降順)や重複削除 を行うプログラムを紹介します。

サンプルコード:ソートと重複削除

import java.util.*;

public class ListSortUniqueSample {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        List<Integer> numbers = new ArrayList<>();

        System.out.println("整数をスペース区切りで入力してください(例: 10 20 30 20 10):");
        String line = sc.nextLine();

        // 入力を分割してリストに追加
        String[] parts = line.split("\\s+");
        for (String p : parts) {
            try {
                int n = Integer.parseInt(p);
                numbers.add(n);
            } catch (NumberFormatException e) {
                System.out.println("数値に変換できません: " + p);
            }
        }

        if (numbers.isEmpty()) {
            System.out.println("有効な数値が入力されませんでした。");
            return;
        }

        // 昇順ソート
        List<Integer> ascList = new ArrayList<>(numbers);
        Collections.sort(ascList);

        // 降順ソート
        List<Integer> descList = new ArrayList<>(numbers);
        descList.sort(Collections.reverseOrder());

        // 重複削除(Setを利用)
        Set<Integer> uniqueSet = new LinkedHashSet<>(numbers); // 入力順を保持
        List<Integer> uniqueList = new ArrayList<>(uniqueSet);

        // 結果表示
        System.out.println("元のリスト: " + numbers);
        System.out.println("昇順ソート: " + ascList);
        System.out.println("降順ソート: " + descList);
        System.out.println("重複削除: " + uniqueList);
    }
}
Java

✅ 実行例

整数をスペース区切りで入力してください(例: 10 20 30 20 10):
30 10 20 10 40 20
元のリスト: [30, 10, 20, 10, 40, 20]
昇順ソート: [10, 10, 20, 20, 30, 40]
降順ソート: [40, 30, 20, 20, 10, 10]
重複削除: [30, 10, 20, 40]

ポイント

  • Collections.sort(list) → 昇順ソート
  • list.sort(Collections.reverseOrder()) → 降順ソート
  • Set(特に LinkedHashSet) を使うと重複削除が簡単
    • HashSet は順序が保証されない
    • LinkedHashSet は入力順を保持
    • TreeSet は自動で昇順ソートされる

まとめ

  • ソートは Collections.sortreverseOrder で簡単にできる
  • 重複削除は Set を使うのが定番
  • LinkedHashSet を使えば「入力順を保ったまま重複削除」が可能

👉 ここまでで「入力 → List に格納 → 集計 → ソート・重複削除」まで一通りの流れが完成しました。

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました