Почему collection.sort бросает неподдерживаемый исключение операции при сортировке компаратором в Java?

Ниже приведен мой код, используемый для сортировки списка с предопределенным порядком. Определенный порядок указан в itemsSorted list.

final List<String> itemsSorted = myMethod.getSortedItems();

List<String> plainItemList = myMethod2.getAllItems();

final Comparator<String> comparator = new Comparator<String>() {        

    public int compare(String str1, String str2) {
        return orderOf(str1) - orderOf(str2);
    }

    private int orderOf(String name) {          
        return ((itemsSorted)).indexOf(name);
    }
 };
 Collections.sort(plainItemList, comparator);
 return plainItemList;

Вышеупомянутый код бросает

Caused by: java.lang.UnsupportedOperationException
    at java.util.Collections$UnmodifiableList$1.set(Collections.java:1244)
    at java.util.Collections.sort(Collections.java:221)

Я не уверен, почему список не поддается изменению. Пожалуйста, помогите мне в этом.

Ответ 1

Список не модифицируется, очевидно, что ваш клиентский метод создает немодифицируемый список (например, Collections#unmodifiableList и т.д.). Перед сортировкой просто создайте изменчивый список:

List<String> modifiableList = new ArrayList<String>(unmodifiableList);
Collections.sort(modifiableList, comparator);