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