我想排序CopyOnWriteArrayList
。但是当我尝试运行以下代码时
它正在投掷unsorted operation exception
.
public class CopyOnWriteArrayListExample {
public static void main(final String[] args) {
List<String> list = new CopyOnWriteArrayList<>();
list.add("3");
list.add("2");
list.add("1");
Collections.sort(list);
}
}
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.concurrent.CopyOnWriteArrayList$COWIterator.set(CopyOnWriteArrayList.java:1049)
at java.util.Collections.sort(Collections.java:159)
at com.sac.list.CopyOnWriteArrayListExample.main(CopyOnWriteArrayListExample.java:15)
提前致谢。
Collections.sort 使用 ListIterator.set
...
for (int j=0; j<a.length; j++) {
i.next();
i.set((T)a[j]);
}
但CopyOnWriteArrayList的ListIterator不支持remove、set或add方法。
解决方法:
Object[] a = list.toArray();
Arrays.sort(a);
for (int i = 0; i < a.length; i++) {
list.set(i, (String) a[i]);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)