因为在迭代期间列表中的strustural更改时可以抛出ConcurrentModificationException(CME)。 我看到在jdk 1.6中存在CopyOnWriteArrayList以处理CME但CopyOnWriteLinkedList不存在。什么原因 背后呢?我相信它背后肯定有逻辑。
答案 0 :(得分:0)
CopyOnWriteArrayList基于数组。所有可变操作都会复制此数组,进行更改并使用更新的数组替换当前数组。复制数组很快。复制一系列链接是很多工作
答案 1 :(得分:0)
为什么CopyOnWriteLinkedList不存在?
原因是(假设的)写时复制链表数据结构不会提供优于传统链表的任何性能优势。 (@Evgeniy Dorofeev的回答给出了高级解释......)
在Java类库中拥有特殊并发集合类的原因是它们为一些常见用例提供了比简单(非并发)类更好的性能。 A"并发"列表并不比简单的表现更好是浪费时间来实现,浪费时间使用。