Я работал над демонстрацией сортировки с использованием 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());