Я работал над демонстрацией сортировки с использованием Comparable и Comparator, когда впервые заметил это.

Итак, если вы создаете новый список, вызывая List.of(…), который возвращает неизменяемый список, вы не можете отсортировать этот список простым способом.

Предположим, у нас есть список целых чисел.

List<Integer> nums = List.of(1, 4, 2, 3);

И если мы попытаемся отсортировать этот список с помощью Collections.sort(..) или List.sort(..), то он выдаст исключение UnsupportedOperationExcecption.

nums.sort(null);
//OR
Collections.sort(nums);

----------------------------------
Exception in thread "main" java.lang.UnsupportedOperationException
 at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142)
 at java.base/java.util.ImmutableCollections$AbstractImmutableList.sort(ImmutableCollections.java:261)
 at java.base/java.util.Collections.sort(Collections.java:145)
 at SortingDemo.main(SortingDemo.java:13)

Итак, как мы можем отсортировать такой список. Ну, потоки могут сделать это.

List<Integer> sortedNums = nums.stream()
                                .sorted()
                                .collect(Collectors.toList());