Javaのリストをソートして重複を除く方法を教えてください

Collections.sort()メソッドでは、リスト内の要素がComparableインターフェイスを実装している場合、compareTo()メソッドの実装にしたがってソートされます。

ネイティブな日本語で言い換えました。ひとつだけ選びました。

List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(2);

Collections.sort(list);

System.out.println(list); // 输出:[1, 2, 3]

`Comparable`インターフェースがリスト内の要素に実装されていない場合は、`Collections.sort()`メソッドのオーバーロードされたバージョンを使用できます。このオーバーロードされたバージョンは`Comparator`パラメータを受け取り、ソートのロジックの指定に使用します。

サンプルコード:

List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");

Collections.sort(list, new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        return o1.compareTo(o2);
    }
});

System.out.println(list); // 输出:[apple, banana, orange]

リストから重複を削除するには、セットデータ構造を使用できます。セットは重複した要素を含まないコレクションなので、リストの要素をセットに追加してから、セットをリストに変換することができます。

サンプルコード:

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(2);
list.add(1);

Set<Integer> set = new HashSet<>(list);
list = new ArrayList<>(set);

System.out.println(list); // 输出:[1, 2, 3]

また、Java8 以降であれば、stream()メソッドでソートや重複排除といった操作も可能です。

サンプルコード:

List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(2);
list.add(2);
list.add(1);

list = list.stream()
        .distinct()
        .sorted()
        .collect(Collectors.toList());

System.out.println(list); // 输出:[1, 2, 3]
bannerAds