网站首页 > 基础教程 正文
1、首先判断这个集合是否为无参构造出来的,如果是的话和传进的size+1比较取最大值【得到所需容器大小】进入下一步操作。
2、ensureExplicitCapacity中首先增加了修改记录modCount+1
https://blog.csdn.net/qq_24235325/article/details/52450331
modCount主要是为了在迭代器当中有个next方法如果越界的话会判断modCount和expectedModCount值的相等性,抛出同步修改异常。在对一个集合对象进行迭代操作的同时,并不限制对集合对象的元素进行操 作,这些操作包括一些可能引起迭代错误的add()或remove()等危险操作。在AbstractList中,使用了一个简单的机制来规避这些风险。 这就是modCount和expectedModCount的作用所在
然后判断所需的容器大小和所需最小容器大小比较,如果不够的话进行扩容
3、默认是原有容器的1.5倍大小,不够的话用所需最小的值。如果过大的话先判断是否小于0【栈溢出】抛异常,或者按照Integer.MAX_VALUE - 8进行扩容。
猜你喜欢
- 2024-10-12 Java中Array,List,Set,ArrayList,Linkedlist集合的区别
- 2024-10-12 Array与ArrayList的区别 arraylist和arrays
- 2024-10-12 面试官和我聊一聊 ArrayList 面试redis
- 2024-10-12 ArrayList 和 LinkedList 源码分析
- 2024-10-12 Java集合框架,我花60分钟总结,你花20分钟记忆
- 2024-10-12 ArrayList 源码浅析 arraylist源码分析
- 2024-10-12 学点算法(一)——ArrayList内部数组实现元素去重
- 2024-10-12 面试官让我聊聊 ArrayList 解决了数组的哪些问题
- 2024-10-12 秋招啦!朋友,你不会现在连泛型都不清楚吧!不会吧不会吧
- 2024-10-12 每天一道面试题之Arraylist 与 LinkedList 区别
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)