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を実装する必要があります。