gpt4 book ai didi

java - Java中重新调整数组大小的技术: is "nullifying" the array bad?

转载 作者:行者123 更新时间:2023-11-30 03:24:21 26 4
gpt4 key购买 nike

我正在学习 Java,令人惊讶的是我发现 Java 数组不是动态的 - 尽管它的同类语言具有动态数组。

所以我想出了自己在java中模仿动态数组的想法。

我的一个想法是将原始数组引用复制到临时数组,然后将原始数组转为空,将其索引重新设置为更大的值,最后重新复制临时数组中的值。

示例:

if(numberOfEntries == array.length){
Type[] temp = new Type[numberOfEntries];
for(int x=0; x < numberOfEntries; x++){
temp[x] = array[x];
}
array = null;
array = new Type[numberOfEntries+1];
for(int x=0; x < numberOfEntries; x++){
array[x] = temp[x];
}

我知道如果进程中断,这可能会导致数据丢失,但除此之外,这是一个坏主意吗?我有什么选择?

谢谢!

最佳答案

你的想法是正确的。但是对于您建议的任务,您永远不应该实现自己的版本,除非它是出于学术目的和乐趣。

您的建议大致由 ArrayList 实现类(class)。它有一个内部数组和一个大小“计数器”。添加项目时,内部数组将被填充。当内部数组已满时,所有元素都会复制到更大的数组中。内部数组永远不会释放给类的用户(以确保其状态始终有效)。

在您的示例代码中,因为数组是指针,所以您实际上并不需要临时数组。只需创建一个新数组,复制所有元素并将指向它的指针保存为数组即可。

关于java - Java中重新调整数组大小的技术: is "nullifying" the array bad?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30618648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com