许多List实现都有一个选项来指定集合的初始容量,为什么不允许CopyOnWriteArrayList?CopyOnWriteArrayList的初始容量
2
A
回答
7
在传统的ArrayList
中,容量是在备份数组中预留更多空间的提示,以便稍后将更多元素添加到列表中。
在CopyOnWriteArrayList
中,每个(原子)写操作都会创建一个新的后备数组。预先分配大于当前列表大小的数组是没有意义的,因为该空间永远不会被使用。
+0
谢谢,这通常是有道理的。我希望通过在处理大型馆藏时分配更大的容量来实现一些性能提升。显然,这将是一个错误的数据结构选择(用于频繁写入) – vsnyc
+0
*显然,这将是一个错误的数据结构选择(用于频繁写入)* - 绝对正确! –
相关问题
- 1. ByteBuf初始容量大小
- 2. LINQ ToDictionary初始容量
- 3. C++中向量的初始容量
- 4. 设置ArrayList的ArrayList的初始容量
- 5. 具有初始容量的字典
- 6. HashSet的初始容量<Integer>
- 7. HashMap初始化参数(加载/初始容量)
- 8. 栈链表与初始容量
- 9. 创造了C++与初始容量
- 10. 未初始化的初始值常量
- 11. 是否建议初始化具有初始容量的数组列表
- 12. CopyOnWriteArrayList的行为
- 13. CopyOnWriteArrayList(cowal)
- 14. 变量初始化?
- 15. 初始化向量
- 16. 初始化变量
- 17. 初始化变量
- 18. 变量初始化
- 19. 向量初始化
- 20. 初始化数量
- 21. 变量初始化
- 22. 初始化向量
- 23. 初始化张量
- 24. 初始化向量
- 25. 初始化变量
- 26. 初始化变量
- 27. 初始化变量
- 28. 矢量初始化向量
- 29. 矢量初始化矢量
- 30. OleVariant变量的初始值
为什么你认为你需要一个? –
我知道这些操作很昂贵,因为它每次都会提供一个全新的副本,但是之前没有仔细查看构造函数。这[回答](http://stackoverflow.com/a/39453595/2063026)让我觉得这是不可能的。 'CopyOnWriteArrayList'是一个非常糟糕的选择,用于并行流操作的大集合 – vsnyc