Javaでソートされていないコレクションをどのようにソートするか

HashSetやHashMapなどJavaの非順序付けコレクションは、要素の順番を保持しないため、直接ソートすることはできません。しかし、他のデータ構造を使用して、非順序付けコレクションをソートできます。

よくある手法として、無順序集合を順序集合(TreeSet や TreeMap など)に変換し、変換後の順序集合をソートする方法があります。たとえば、HashSet を TreeSet に変換し、変換後の TreeSet に Collections.sort メソッドを適用することでソートできます。

以下にサンプルコードを示します:

import java.util.*;

public class SortUnorderedCollection {
    public static void main(String[] args) {
        // 创建一个无序集合
        Set<Integer> unorderedSet = new HashSet<>();
        unorderedSet.add(3);
        unorderedSet.add(1);
        unorderedSet.add(2);

        // 将无序集合转换为有序集合
        Set<Integer> orderedSet = new TreeSet<>(unorderedSet);

        // 将有序集合转换为列表
        List<Integer> orderedList = new ArrayList<>(orderedSet);

        // 使用Collections.sort方法对列表进行排序
        Collections.sort(orderedList);

        // 输出排序后的结果
        for (int num : orderedList) {
            System.out.println(num);
        }
    }
}

結果は出力されました。

1
2
3

なお, この方法は素の並び順でしか使えません。カスタムな並び順でソートしたい場合はComparatorインターフェースを活用して独自にComparatorを実装する必要があります。

bannerAds