2016-07-28 46 views
0

我想写一个通用的方法来扩展具有特定类型的数组的容量。函数签名可能会这样(不必),参数“增长”意味着增长容量的数量。如何写数组扩展容量的通用方法?

公共静态T [] expandCapacity(T []数组,INT生长)

的例子:整数[] testArray =新的整数[5]; testArray = expandCapacity(testArray,5);

执行此功能之后,testArray.length应该是10

+0

好吧,那么去写吧? – immibis

+0

你正在做这个而不是使用'List'类型之一的任何特定原因,比如'ArrayList'? – Powerlord

+0

我们知道List接口像“ArrayList”使用Object数组来存储数据,而“ArrayList”可以调整大小,所以我想写一个演示来实现这个功能。 – Lucifa

回答

1

要使用泛型类型Tstatic方法,你必须用<T>指定。然后,您可以使用Arrays.copyOf(T[], int)哪些(每Javadoc)复制指定的数组,截断或用空值填充(如有必要),以便副本具有指定的长度。

public static <T> T[] expandCapacity(T[] array, int growth) { 
    return Arrays.copyOf(array, array.length + growth); 
} 
0

如果你想改变原来的数组,这意味着expandCapacity返回数组是同一基准参数array的长度,这是不可能的,因为一个数组初始化后固定的长度。

如果返回数组不是相同的引用,只需在该方法内创建一个新大小的新数组,并从源数组中复制数据,但恐怕不是您想要的。

我建议你看看List<E>的界面,以及它的大小可以改变的ArrayList<E>的实现。