java如何在运行时根据用户/程序员的需要自动增加数组的大小?
我正在编写java的Vector类和所有其他java集合类的代码,但我有一个问题,那就是如何在运行时自动增加数组的大小。。 程序运行正常,不会出现“数组越界异常” .. 这是我的密码
{pr 1}$提前谢谢你的帮助
你可以在下面搜索框中键入要查询的问题!
我正在编写java的Vector类和所有其他java集合类的代码,但我有一个问题,那就是如何在运行时自动增加数组的大小。。 程序运行正常,不会出现“数组越界异常” .. 这是我的密码
{pr 1}$提前谢谢你的帮助
# 1 楼答案
阅读上面的@notyou评论。您应该做的是创建另一个长度增加的数组,将所有元素(从旧数组)复制到这个数组中,并告诉代码新数组(现在)就是数据数组
# 2 楼答案
没有办法做到这一点,但你可以使用LinkedList或实现你自己的解决方案(Ziakad在评论部分说这应该放在Vector类中是正确的。我只是给出了一个一般性的描述,但在问题的上下文中,这是一个很好的建议):
用法示例:
# 3 楼答案
想想数组是如何实现的:您“提前”指定数组的大小,然后运行时留出足够多的连续内存位置来容纳指定大小的数组。这意味着数组不能动态调整大小——你不知道数组末尾之后的下一个连续内存位置中有什么。下面是大小为6的布尔值数组的图示:
旁注:它的一个有趣特性是,您可以使用以下公式计算出任何特定项的内存地址:
(initial memory location) + (array index * size of each memory location)
。例如,如果数组从位置100开始,并且每个位置的大小都是2,那么数组中的第一项位于位置100 + (2 * 0) = 100
。索引3中的项目位于位置100 + (2 * 3) = 106
。这就是为什么你可以在固定时间内访问数组中的任意位置——你可以用指针算法在任意索引中找到一个项目的位置TL;DR无法动态调整阵列大小