为啥 CopyOnWriteArrayList 中没有这样的 removeRange() 方法?

Posted

技术标签:

【中文标题】为啥 CopyOnWriteArrayList 中没有这样的 removeRange() 方法?【英文标题】:Why is there no such removeRange() method in CopyOnWriteArrayList?为什么 CopyOnWriteArrayList 中没有这样的 removeRange() 方法? 【发布时间】:2013-07-27 13:49:33 【问题描述】:

为什么在ArrayList中有这样的方法而在并发兄弟上却没有?

受保护的 void removeRange(int fromIndex, int toIndex)

只是好奇,这不是根本问题,我可以解决它。

【问题讨论】:

你能举一个 List 的例子吗? @PeterLawrey ArrayList 的 List 实现具有该方法。我只是好奇为什么它在并发版本中不一样..可能是由于一些同步问题?我知道如何解决它。谢谢 如果对这件事感兴趣,请查看:***.com/questions/2289183/… 【参考方案1】:

你可以间接做到这一点。

List<Integer> ints = new CopyOnWriteArrayList<Integer>();
for (int i = 0; i < 10; i++) ints.add(i);
ints.subList(4, 7).clear();
System.out.println(ints);

打印

[0, 1, 2, 3, 7, 8, 9]

【讨论】:

以上是关于为啥 CopyOnWriteArrayList 中没有这样的 removeRange() 方法?的主要内容,如果未能解决你的问题,请参考以下文章

Java集合 CopyOnWriteArrayList

Java并发多线程编程——并发容器CopyOnWriteArrayList

Java并发编程之CopyOnWriteArrayList源码分析

源码阅读(29):Java中线程安全的List结构——CopyOnWriteArrayList

源码阅读(29):Java中线程安全的List结构——CopyOnWriteArrayList

CopyOnWriteArrayList分析