Pop*_*ppy 20 java sorting collections arraylist
以下是我用于按预定义顺序对列表进行排序的代码.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;
Run Code Online (Sandbox Code Playgroud)
上面的代码抛出
Caused by: java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableList$1.set(Collections.java:1244)
at java.util.Collections.sort(Collections.java:221)
Run Code Online (Sandbox Code Playgroud)
我不确定为什么列表是不可修改的.请帮帮我.
qqi*_*ihq 55
该列表不可修改,显然您的客户端方法正在创建一个不可修改的列表(使用例如Collections#unmodifiableList等).只需在排序前创建一个可修改的列表:
List<String> modifiableList = new ArrayList<String>(unmodifiableList);
Collections.sort(modifiableList, comparator);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18811 次 |
| 最近记录: |