java - 减少数组的大小(通过创建新数组) - arrayList 是如何做到的?

标签 java android arrays arraylist

在我的一个类(class)中,我有一个像这样的方法:

public void setArray(int size){

myArray = new int[size]  //myArray is declared already

}

现在,如果我调用它并传入 500,如下所示:

setArray(500);

然后,稍后在我的应用程序中,我只需要一个包含 50 个元素的数组,此时,我只需再次调用它并传入 50 作为我的参数。

这个数组在我的应用程序中被多次引用,我想知道 CG 是否会收集旧的数组?

我知道我真的应该使用 arrayList,不幸的是,这将是一项重大任务,因为我的代码现在有数千行和 18 个类的大小(所以我想我已经为下一个项目学习了!)

arrayList 是如何在“幕后”实现这一点的?我可以模拟 arrayList 行为吗?它只是像我一样创建一个新数组吗?

最佳答案

您正在描述dynamic array的行为

实现此数据结构的最简单方法是在数组已满或低于某个阈值(例如,仅占用 1/4 的单元格)时创建一个新数组,并将现有值复制到新数组中。

如果你想知道它在 java 中是如何完成的,以及正在进行哪些优化 - 你可能想看看 ArrayList class source .

关于java - 减少数组的大小(通过创建新数组) - arrayList 是如何做到的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18063706/

相关文章:

android - 从Flutter项目构建APK时出错

ios - AVQueuePlayer 仅从数组中播放一次音频

php - 为什么 PHP 会抛出这个解析错误?

javascript - 在字符串数组中查找字符串的最快方法

java - 我该如何初始化它?

java - PDF-A 文件验证

java - Weka:ADTree 和 LADTree 非法选项错误

安卓-Achartengine XYScatter OnclickListener

java - 预定执行器服务 : when shutdown should be invoked?

android - 在 TextView 中显示日语而不是中文