iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java中Arraylist的最大长度是多少
  • 733
分享到

Java中Arraylist的最大长度是多少

2023-06-29 08:06:05 733人浏览 八月长安
摘要

这篇文章主要介绍了Java中Arraylist的最大长度是多少,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Arraylist的最大长度Arraylist的MAX_ARRAY

这篇文章主要介绍了Java中Arraylist的最大长度是多少,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Arraylist的最大长度

Arraylist的MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;

ArrayList集合的最大长度是多少?

    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;    }

源码中定义MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;上面的注释也写明白了。

一些vm可能会在数组中保留一些header信息,分配更大的长度可能会导致OutOfMemoryError异常。

这里这样做的原因是为了尽可能的避免因为vm使用了数据保存header的信息而导致分配更大的长度产生OutOfMemoryError异常。但是并不一定超出这个长度一定会异常。这只是为了尽可能的去避免。但是假使当一个vm使用了数组保存一些header,并且这些header使用的长度大于8时那么当数组扩容到2^31-1再减去header的信息长度时依旧会发生OutOfMemoryError异常。

Arraylist的最大长度为2147483647即2^31-1

arrayList的底层结构是基于数组实现的,作为下标的最大数据应该是Integer.MAX_VALUE即2^31-1。

我们观察上面代码中的grow(int minCapacity)会发现其中有一个特殊的地方

  if (newCapacity - MAX_ARRAY_SIZE > 0)            newCapacity = hugeCapacity(minCapacity);

而hugeCapacity(int minCapacity)方法中表明了,

    private static int hugeCapacity(int minCapacity) {        if (minCapacity < 0) // overflow            throw new OutOfMemoryError();        return (minCapacity > MAX_ARRAY_SIZE) ?            Integer.MAX_VALUE :            MAX_ARRAY_SIZE;    }

新长度在满足一定条件时是可以为Integer.MAX_VALUE的。

所以说Arraylist的最大长度为2147483647即2^31-1。 

ArrayList的扩容问题

ArrayList的容量有两种

Sun公司的源代码里面有以下两种构造方法

1.无参的构造方法

Java中Arraylist的最大长度是多少

Java中Arraylist的最大长度是多少

无参的构造方法就是事先创建好一个空数组 当向该数组中添加第一个元素的时候 初始化容量为10

2.含参的构造方法

Java中Arraylist的最大长度是多少

含参构造方法是传入一个容量值 然后来进行定义容量的大小

接下来是关于容量满了之后的扩容问题

扩容的原因是因为容量满了 而能够增加元素的方法是add() 所以扩容会和add()方法有关系

Java中Arraylist的最大长度是多少

从下面的add()方法我们可以看出 该add()调用了另一个add()方法 我们点过去又会发现 扩容和grow()方法也有关系

Java中Arraylist的最大长度是多少

Java中Arraylist的最大长度是多少

Java中Arraylist的最大长度是多少

这个是最后的扩容的grow()方法了 我们可以从中发现一个这个

Java中Arraylist的最大长度是多少

最小容量增长值是minCapacity-oldCapacity 然后oldCapacity是位运算向右移一位

Java中Arraylist的最大长度是多少

也就是增加的容量=原始容量-原始容量/2=0.5原始容量

所以扩容之后的容量是扩容之前的容量的1.5倍

另外 HashSet 底层是 HashMap 初始化容量16 扩容后*2 且初始化容量是2的倍数 扩容因子是0.75

Properties 初始化容量为11 扩容为 *2+1 扩容因子是0.75

感谢你能够认真阅读完这篇文章,希望小编分享的“Java中Arraylist的最大长度是多少”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Java中Arraylist的最大长度是多少

本文链接: https://www.lsjlt.com/news/323630.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中Arraylist的最大长度是多少
    这篇文章主要介绍了Java中Arraylist的最大长度是多少,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Arraylist的最大长度Arraylist的MAX_ARRAY...
    99+
    2023-06-29
  • Java中Arraylist的最大长度
    目录Arraylist的最大长度Arraylist的MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;Arraylist的最大长度为2147483647即...
    99+
    2024-04-02
  • String最大长度是多少
    这篇文章将为大家详细讲解有关String最大长度是多少,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言当你看到这个问题“String长度限制是多少”时是不...
    99+
    2024-04-02
  • oracle中nvarchar2的最大长度是多少
    在Oracle数据库中,NVARCHAR2数据类型用于存储Unicode字符集的可变长度字符串。NVARCHAR2数据类型的最大长度...
    99+
    2024-04-09
    oracle
  • oracle中varchar最大长度是多少
    oracle 中varchar的最大长度取决于oracle版本和数据库字符集:oracle 11g和更早版本为4000字节,oracle 12c及更高版本为32767字节。单字节字符集(...
    99+
    2024-05-08
    oracle
  • php数组最大长度是多少
    PHP 的数组不是一个固定长度的数据结构,因此没有明确的最大长度限制。在 PHP 中,数组是一种有序的、可重复的数据集合,可以存储任何类型的数据,包括整数、浮点数、字符串、布尔值等。PHP 数组的长度取决于可用的内存,因为 PHP 数组在内...
    99+
    2023-05-19
  • MySQL中每种类型标识符的最大长度是多少?
    众所周知,MySQL 中的某些对象被称为标识符。这些对象包括数据库、表、索引、列、别名、视图、存储过程、分区、表空间等。标识符使用 Unicode (UTF-8) 存储。每种类型标识符的最大长度如下表所示:Sr.编号标识符最大长度(字符)1...
    99+
    2023-10-22
  • oracle中number的长度是多少
    oracle number 数据类型的最大长度为 38 位,包含小数点和小数位:38 位整数部分和 128 位小数部分。精度是指小数点后可存储的数字位数,范围从 0 到 128 不等。选...
    99+
    2024-05-03
    oracle
  • PHP 函数命名的最佳长度是多少?
    php 函数的最佳命名长度约为 10-30 个字符,具体取决于复杂性和目的。短函数名便于记忆和输入,但可能模糊不清。长函数名提高可读性,但可能笨重且难以记住。命名约定包括使用动词或动名词...
    99+
    2024-04-19
    php 函数命名长度
  • mysql中int(5)的长度是多少
    这篇文章主要介绍“mysql中int(5)的长度是多少”,在日常操作中,相信很多人在mysql中int(5)的长度是多少问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql中int(5)的长度是多少”的疑...
    99+
    2023-07-06
  • java如何获取arraylist的长度
    要获取ArrayList的长度,可以使用ArrayList的size()方法。该方法返回ArrayList中元素的个数。示例代码如下...
    99+
    2023-09-23
    java
  • String长度的限制是多少
    这篇文章主要介绍“String长度的限制是多少”,在日常操作中,相信很多人在String长度的限制是多少问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”String长度的限制是...
    99+
    2024-04-02
  • sql中varchar默认长度是多少
    sql 中 varchar 数据类型的默认长度因 dbms 而异,通常为:mysql:255 个字符postgresql:255 个字符microsoft sql server:1 个字...
    99+
    2024-05-02
    mysql oracle
  • MySQL VARCHAR 最大大小是多少?
    MySQL版本5.0.3之前能够存储255个字符,但从版本5.0.3开始,能够存储65,535个字符。MySQL官方文档指出:MySQL 5.0.3及更高版本中VARCHAR的有效最大长度取决于最大行大小(65,535字节,这是所有列共享的...
    99+
    2023-10-22
  • PHP数组长度限制是多少?
    PHP中数组的长度并没有固定的限制,它可以根据系统的内存大小来动态调整。在PHP中,数组是一种非常灵活的数据结构,可以存储任意数量的元素,每个元素可以是任意类型的值,甚至可以是另一个数...
    99+
    2024-03-13
    编程 php 数组 长度
  • 电脑最佳温度是多少度
    最佳温度取决于电脑的使用环境和硬件要求。一般来说,大多数电脑的最佳工作温度范围在 20°C 到 25°C 之间。如果温度超过这个范围...
    99+
    2023-08-31
    电脑
  • JavaScript的数组最大是多少
    本篇内容介绍了“JavaScript的数组最大是多少”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • Mysql中的单表最大记录是多少
    目录mysql单表最大记录数不能超过多少mysql单表存储数据量有上限吗总结mysql单表最大记录数不能超过多少 其实mysql本身并没有对单表最大记录数进行限制,这个数值取决于你的...
    99+
    2023-02-18
    Mysql单表 Mysql单表最大记录 Mysql单表记录
  • MySQL中怎么求varchar最大长度
    MySQL中怎么求varchar最大长度,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、限制规则字段的限制在字段定义的时候有以下规则:&...
    99+
    2024-04-02
  • mysql最大连接数是多少
    mysql最大连接数是151。mysql数据库最大连接数是指在同一时间内可以与 mysql数据库建立的最大连接数,这个数字对于高流量的Web应用程序和大型企业应用程序至关重要,如果超过了最大连接数,那么新的连接将无法建立,从而导致应用程序崩...
    99+
    2023-07-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作