我想写一个通用的方法来扩展具有特定类型的数组的容量。函数签名可能会这样(不必),参数“增长”意味着增长容量的数量。如何写数组扩展容量的通用方法?
公共静态T [] expandCapacity(T []数组,INT生长)
的例子:整数[] testArray =新的整数[5]; testArray = expandCapacity(testArray,5);
执行此功能之后,testArray.length应该是10
我想写一个通用的方法来扩展具有特定类型的数组的容量。函数签名可能会这样(不必),参数“增长”意味着增长容量的数量。如何写数组扩展容量的通用方法?
公共静态T [] expandCapacity(T []数组,INT生长)
的例子:整数[] testArray =新的整数[5]; testArray = expandCapacity(testArray,5);
执行此功能之后,testArray.length应该是10
要使用泛型类型T
与static
方法,你必须用<T>
指定。然后,您可以使用Arrays.copyOf(T[], int)
哪些(每Javadoc)复制指定的数组,截断或用空值填充(如有必要),以便副本具有指定的长度。
public static <T> T[] expandCapacity(T[] array, int growth) {
return Arrays.copyOf(array, array.length + growth);
}
如果你想改变原来的数组,这意味着expandCapacity
返回数组是同一基准参数array
的长度,这是不可能的,因为一个数组初始化后固定的长度。
如果返回数组不是相同的引用,只需在该方法内创建一个新大小的新数组,并从源数组中复制数据,但恐怕不是您想要的。
我建议你看看List<E>
的界面,以及它的大小可以改变的ArrayList<E>
的实现。
好吧,那么去写吧? – immibis
你正在做这个而不是使用'List'类型之一的任何特定原因,比如'ArrayList'? – Powerlord
我们知道List接口像“ArrayList”使用Object数组来存储数据,而“ArrayList”可以调整大小,所以我想写一个演示来实现这个功能。 – Lucifa