作为标题,如何在不导入任何库的情况下调整java中的数组,包括ArrayList
,Arrays.copyOf
等等。
另外,我必须在我的程序中一次又一次地使用未知的输入数据调整大小。(即我有一个小数组,但是当数据增加时,我该如何调整它?)
答案 0 :(得分:2)
Java没有为分配的存储提供“调整大小”选项。您必须分配所需大小的新存储,并将旧存储中的数据复制到新存储。
您可以使用System.arraycopy()复制数据。 ArrayList
和Vector
类会自动执行这些重新分配和复制操作,因此如果您不使用它们,则需要重新发明轮子。
java.lang.System
当然会自动导入到每个java程序中,因此,根据需要,您不需要import java.lang.System;
来实现它。
答案 1 :(得分:1)
不幸的是,you cant resize an array in java。
你可以做的一些事情是:
当获取新数据时,创建一个新数组并复制旧数组+新数据。
使用ArrayList,在向其添加数据时使数组更大。
使用java.util.Arrays.copyOf(...)
。这会返回一个更大的数组,其中包含前一个数组的内容。
答案 2 :(得分:0)
根据定义,数组的大小是固定的,我知道很多现代语言可以让你分配长度并动态改变长度
但我认为你要找的是Vector
https://docs.oracle.com/javase/7/docs/api/java/util/Vector.html
它允许O(1)访问(就像数组一样),同时具有动态的长度
答案 3 :(得分:0)
声明后,无法增加数组的大小。所以你必须在java中使用Collection框架,可能是ArrayList或LinkedList。
这就是Array和ArrayList之间的区别。在ArrayList中,您可以动态添加元素,无需增加它的大小。
答案 4 :(得分:0)
您可以使用 forEach
将值复制到扩大的新数组中
IntStream.range( 0, oldArray.length ).forEach( i -> newArray[i] = oldArray[i] );