当前位置: 首页 > 知识库问答 >
问题:

数组列表容量限制约束

薛钧
2023-03-14

我已经搜索了ArrayList容量问题,但没有找到完整的答案。所以在这里再问一次。

我知道,我们在ArrayList中添加的元素数量和容量的大小是我们可以在默认值为10的列表中放入多少数据。

所以这里的问题是,在宣布是否有这样的能力时

List<String> list = new ArrayList<>(1);

然后我还可以继续将元素增加到10或20。那么,这个容量声明仅对达到容量时发生的内部重新分配有用吗?

或者,通过给出容量限制,我们可以只限制到添加元素的那一点吗?

共有3个答案

通沛
2023-03-14

数组列表和其他集合将随着容量的耗尽而增长。然而,他们如何做到这一点取决于“幕后”使用什么数据结构

数组列表由 Java 数组提供支持。当该数组接近被填充时,将创建一个新数组,通常容量是原来的两倍,然后将所有元素从旧数组复制到新数组,然后 ArrayList 指向新数组。

由于数组每次都翻倍,因此向数组添加元素仍然是恒定时间操作或bigO表示法中的“O(1)”。它是在“摊销时间”中完成的

但是,如果您知道ArrayList可能包含n元素,则可以使用初始大小n来声明它。这使得初始数组足够大,可以容纳您期望的元素,而无需进行任何“调整大小”。(创建更大的数组并复制元素)。

但是,如果您低估了n,这不是问题,因为 ArrayList 仍将增长以处理额外的元素。

吕岳
2023-03-14

ArrayList由最大大小Integer.MAX_VALUE-8的数组支持。

这些答案中提到了这一点:

  • 为什么-最大-数组-大小-数组列表-是-整数-最大-值-8
  • 最大数组大小
何修能
2023-03-14

初始容量并不决定可以向< code>ArrayList添加多少元素。随着元素的添加,容量会在必要时自动增加。

指定初始容量的动机是性能。如果您知道您的ArrayList将包含一百万个元素,那么创建初始容量为1000000的ArrayList效率更高,因为这将节省在添加元素时多次调整ArrayList容量的需要。

 类似资料:
  • 我试图在AngularJS中使用DataList渲染大约2000个值(通过API调用)。问题是这些值使页面变得如此缓慢。有没有一种方法,我可以在一次只呈现10个项目,因为它是一个数据管理器,可能会显示匹配的结果,当我们键入限制为10。 这是我的密码笔:https://codepen.io/anon/pen/KyEXMr

  • 我在核心Java一书中读到了下面的片段。 将数组列表分配为新的ArrayList<'Employee>(100)//容量为100 与分配新数组不同,因为new Employee[100]//大小为100 数组列表的容量和数组的大小之间有一个重要的区别。如果分配一个数组有100个条目,那么该数组就有100个插槽,可以使用。一个容量为100个元素的数组列表有可能容纳100个元素(事实上,以额外重新分配

  • 根据SCJP的数组列表。大小应该取决于可用内存的大小,但是list.getSize()返回一个整数。假设< code >整数。MAXSIZE是最大值。阵列容量。即int最大允许值

  • 我正在尝试使用类 $filesToCopy的输出: 我做错了什么?FullName似乎引发了一个问题。

  • 问题内容: 我想限制一个SQL Server十进制列以仅允许-1,0,1作为有效值。 您能告诉我添加这样的约束的SQL语法吗?(我想知道如何在CREATE TABLE语句和/或ALTER TABLE ADD CONSTRAINT中执行此操作)。 还是只能在触发器中完成? 问题答案: 或者 编辑:想法… 为什么要限制小数点?可以将其更改为smallint或int吗? NULL呢?您可能需要更改我的代

  • 我正在使用docplex(不是docplex云API)解决Python中的最佳化问题,只有2个约束和92个变量(OPL中的dvar)。但是即使我有这个错误: docplex。议员。乌提尔斯。DocplexLimitsCeeded:***促销版。超出问题大小限制,CPLEX代码=1016 我想知道docplex是否有学生版,我无法在IBM网站上找到此信息,因为据我所知,docplex cloud有付