4 回答
TA贡献1877条经验 获得超6个赞
您无法在Java中调整数组大小。你需要:
创建所需大小的新数组,并使用将原始数组中的内容复制到新数组
java.lang.System.arraycopy(...);
使用
java.util.ArrayList<T>
该类,当您需要使数组更大时,它会为您执行此操作。它很好地封装了您在问题中描述的内容。使用
java.util.Arrays.copyOf(...)
返回更大数组的方法,以及原始数组的内容。
TA贡献1829条经验 获得超7个赞
这有几种方法可以做到这一点。
方法1 System.arraycopy()
:
将指定源数组中的数组从指定位置开始复制到目标数组的指定位置。数组组件的子序列从src引用的源数组复制到dest引用的目标数组。复制的组件数等于length参数。源数组中位置srcPos到srcPos + length-1的组件分别被复制到目标数组的destPos到destPos + length-1的位置。
Object[] originalArray = new Object[5]; Object[] largerArray = new Object[10];System.arraycopy(originalArray, 0, largerArray, 0, originalArray.length);
方法2 Arrays.copyOf()
:
复制指定的数组,使用空值截断或填充(如有必要),以使副本具有指定的长度。对于在原始数组和副本中都有效的所有索引,这两个数组将包含相同的值。对于在副本中有效但不在原始副本中的任何索引,副本将包含null。当且仅当指定的长度大于原始数组的长度时,这些索引才会存在。生成的数组与原始数组完全相同。
Object[] originalArray = new Object[5]; Object[] largerArray = Arrays.copyOf(originalArray, 10);
请注意,此方法通常System.arraycopy()
在幕后使用。
方法3 ArrayList
:
List接口的可调整大小的数组实现。实现所有可选列表操作,并允许所有元素,包括null。除了实现List接口之外,此类还提供了一些方法来操作内部用于存储列表的数组的大小。(这个类大致相当于Vector,除了它是不同步的。)
ArrayList的功能与数组类似,只是当您添加的元素多于它可以包含的元素时,它会自动扩展。它由一个数组支持,并使用Arrays.copyOf。
ArrayList<Object> list = new ArrayList<>(); // This will add the element, resizing the ArrayList if necessary. list.add(new Object());
添加回答
举报