以下は、事前定義された順序でリストをソートするために使用する私のコードです。定義された順序はitemsSortedリストに記載されています。
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)
リストが変更できない理由がわかりません。これについて私を助けてください。
リストは変更できません。明らかにクライアントメソッドが変更不可能なリストを作成しています(例:Collections#unmodifiableList
など)。並べ替える前に、変更可能なリストを作成するだけです。
List<String> modifiableList = new ArrayList<String>(unmodifiableList);
Collections.sort(modifiableList, comparator);