gpt4 book ai didi

java - 为什么 collections.sort 在 Java 中按比较器排序时会抛出不支持的操作异常?

转载 作者:IT老高 更新时间:2023-10-28 20:49:27 29 4
gpt4 key购买 nike

以下是我用于按预定义顺序对列表进行排序的代码。 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);

关于java - 为什么 collections.sort 在 Java 中按比较器排序时会抛出不支持的操作异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21854353/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com