来自JDK 7

java.util.ArrayList类的引用代码片段让我感到困惑.我不能为我的生活理解它怎么可能导致溢出.我困惑的地方标有< ---这是什么意思?有人可以帮助我理解这种逻辑可能溢出的情况吗? TIA.

public void ensureCapacity(int minCapacity) {

if (minCapacity > 0)

ensureCapacityInternal(minCapacity);

}

private void ensureCapacityInternal(int minCapacity) {

modCount++;

// overflow-conscious code

if (minCapacity - elementData.length > 0)

grow(minCapacity);

}

private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;

private void grow(int minCapacity) {

// overflow-conscious code

int oldCapacity = elementData.length;

int newCapacity = oldCapacity + (oldCapacity >> 1);

if (newCapacity - minCapacity < 0)

newCapacity = minCapacity;

if (newCapacity - MAX_ARRAY_SIZE > 0)

newCapacity = hugeCapacity(minCapacity);

// minCapacity is usually close to size, so this is a win:

elementData = Arrays.copyOf(elementData, newCapacity);

}

private static int hugeCapacity(int minCapacity) {

if (minCapacity < 0) // overflow

throw new OutOfMemoryError();

return (minCapacity > MAX_ARRAY_SIZE) ?

Integer.MAX_VALUE :

MAX_ARRAY_SIZE;

}

编辑:我主要担心的是:巨大容量如何能够获得负面大小?

java arraylist length,在Java中调整ArrayList的大小时,无法理解溢出的可能性相关推荐

  1. Java实现 LeetCode 703 数据流中的第K大元素(先序队列)

    703. 数据流中的第K大元素 设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组n ...

  2. java arraylist指定容量_Java中的ArrayList的容量

    List接口的大小可变数组的实现.实现了全部可选列表操做,并容许包括 null 在内的全部元素. ArrayList继承于List接口,除继承过来的方法外,还提供一些方法来操做内部用来存储列表的数组的 ...

  3. java 数组 length 减少_java中数组有没有length()方法?string没有lenght()方法?

    java中数组有没有length()方法,求数组的长度可以使用数组的length属性. int length=arr.length;//求数组的长度 ------------------------- ...

  4. java get方法使用_java中关于set()和get()方法的理解和使用

    java中 当定义了一个私有的成员变量的时候,若是须要访问或者获取这个变量的时候,就能够编写set或者get方法去调用.java set()是给属性赋值的,get()是取得属性值的 被设置和存取的属性 ...

  5. java 读excel 流_Java中使用POI读取大的Excel文件或者输入流时发生out of memory异常参考解决方案...

    原文:https://www.cnblogs.com/cksvsaaa/p/7280261.html 注意:此参考解决方案只是针对xlsx格式的excel文件! 背景 前一段时间遇到一种情况,服务器经 ...

  6. ajax java 插件_对JQuery中Ajax应用与jQuery插件的理解与笔记

    Ajax有原生的和封装jQuery版的,感觉JQuery的写法比较简洁明了,不需要去兼容浏览器. 1 2 3 4 5 6 7 8 9 10 11 12 $(function(){ 13 $.ajax( ...

  7. Java面试知识点(全)- Java面试基础部分一

    Java面试知识点(全) :https://nanxiang.blog.csdn.net/article/details/130640392 Java基础 语法基础 面向对象 封装 利用抽象数据类型将 ...

  8. Java中的ArrayList的初始容量和容量分配

    List接口的大小可变数组的实现.实现了所有可选列表操作,并允许包括 null 在内的所有元素. ArrayList继承于List接口,除继承过来的方法外,还提供一些方法来操作内部用来存储列表的数组的 ...

  9. 实现Java中的ArrayList

    最近深受轮子哥影响,觉得造一些轮子应该会对自己的技术功底有一定的帮助,就决定先从简单的容器开始实现.废话不多说,就先实现一个Java中的ArrayList. ArrayList是我们在Java中使用非 ...

最新文章

  1. Anaconda3 离线安装和配置 Django-3.2.7 使用 MySQL-5.7 数据库
  2. 模板 -基础数据结构
  3. 1.1 欢迎-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授
  4. iphone11返回上一级手势怎么设置_苹果iphone12怎么关闭程序appp 怎么返回上一步
  5. Git学习(一)(2015年11月12日)
  6. 川大锦城c语言期末考试答案,四川大学《计算机组成原理》2018期末考试B卷答案及评分标准.doc...
  7. COVID-19和世界幸福报告数据告诉我们什么?
  8. php无极分类非递归_PHP中的无限级分类、无限嵌套评论
  9. Python 2.7.9 Demo - 015.元组的定义、取值、遍历
  10. ReactNative之Image在Android设置圆角图片变形问题
  11. linux用户配额管理,—linux 磁盘配额按用户管理(quota)
  12. (转)技嘉 MA790FXT-UD5P搭配AMD X4 965超频解析
  13. 在线OJ后端涉及到的知识点
  14. 安卓实时打印kernel日志
  15. PHP用什么标签方便,PHP_用途相似的标签:acronym与abbr,有的时候为了方便传阅或者记 - phpStudy...
  16. 良葛格学习笔记输入输入一章中的PushbackInputStream的补充
  17. GetLastError 错误码大全(转载)
  18. 01-leveldb概述
  19. 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。 请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。如下实例。示例 :输入: 1->2->3->4-
  20. 数字后端 - STA

热门文章

  1. [NOIp2013] 货车运输
  2. 洛谷P2585 [ZJOI2006]三色二叉树
  3. java编程思想读书笔记二(对象的创建)
  4. mysql 查询表结构
  5. ubuntu下mysql整个数据库备份与还原
  6. OAuth2.0_完善环境配置_把资源微服务客户端信息_授权码存入到数据库_Spring Security OAuth2.0认证授权---springcloud工作笔记149
  7. STM32工作笔记0089---UCOSIII存储管理
  8. resnet18 结构
  9. 隐式类型转换与转换操作符operator T
  10. VS CODE离线安装C/C++扩展的方法