如何排序CopyOnWriteArrayList

我想排序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]);

}

以上是 如何排序CopyOnWriteArrayList 的全部内容, 来源链接: utcz.com/qa/405428.html

回到顶部