如何创建一个自我扩展的数组。我不想使用类似ArrayList
和Vector
等来做到这一点。相反,我需要生成一个数组,通过向它添加元素来扩展它的大小。这是我老师的问题。如何创建一个动态扩展自己的数组?
说例如,我想要一个int[]
它扩大它的大小。
例如,用户想要将学生ID输入到数组中。该阵列没有固定的大小,因为没有固定的大小。在这种情况下的学生。当用户说他想再多一次时,数组的大小应该加1。
任何答案表示赞赏。
如何创建一个自我扩展的数组。我不想使用类似ArrayList
和Vector
等来做到这一点。相反,我需要生成一个数组,通过向它添加元素来扩展它的大小。这是我老师的问题。如何创建一个动态扩展自己的数组?
说例如,我想要一个int[]
它扩大它的大小。
例如,用户想要将学生ID输入到数组中。该阵列没有固定的大小,因为没有固定的大小。在这种情况下的学生。当用户说他想再多一次时,数组的大小应该加1。
任何答案表示赞赏。
数组的长度是固定的,你不能增加或减少数组的大小。
你可以做什么创建更大尺寸的新阵列,并使用Arrays#copyOf
源阵列将值复制到新的目标阵列。
注意:Arrays#copyOf
内部调用System.copy
它做浅拷贝。
我已经说过,回答我的老师,她说这只是一个普遍的答案!她反过来问,如果我想要超过限额? –
数组固定长度,你不能增加它 –
@SayOff把你的老师带到这里!我们需要谈谈...... – Maroun
无论你的老师说什么都没有办法动态调整数组的大小,而无需创建一个具有编辑大小的新数组。我认为任何语言都不支持这个要求。只需创建一个新阵列并复制现有阵列。
那么,C(至少在Unix上)有'realloc',所以你当然可以改变已经请求的内存的大小。 –
@JoachimSauer啊感谢兄弟。我不知道。感谢分享 –
你的描述'当用户说他想再多一次时,数组的大小应该加1。只是一个指针数组,它是java中的LinkedList。
这里是您的老师useful link,从文档:
数组是保持值 单一类型的的固定数量的容器对象。当创建数组 时,将建立阵列的长度。创建后,其长度固定为。
的只的选择,并且不用ArrayList
/Vector
..创造一个新的数组和复制的值给它。
我只需展示这一点!我只是在等待她的回答? –
我想我要到数组用递增的尺寸重新初始化,但在这之前,我想我会拥有所有这些元素复制到一个临时数组,然后再次将它们复制到原来的大小的数组被改变。
如果这是正确的,我的老师可能正在寻找这个。但是,这会降低性能。
不使用容器类是老师问题的一部分吗? [这](http://stackoverflow.com/questions/7313628/resizing-an-array)可能会有所帮助 – lelloman
你描述的是不可能的:(一)无论是你的老师不知道他在说什么,或(ii )你误解了他所要求的。例如,他可能会要求您创建一个带有数组的内部类,并在添加新项目时创建一个新的(较大的)数组。 – assylias
**为什么**不想使用'ArrayList'?这完全是**为什么收藏。通过丢弃这些工具,你会*重新发明轮子(通常很糟糕)。 –