【发布时间】:2011-10-23 19:44:53
【问题描述】:
我正在尝试使用我在 Google 上找到的这个自定义函数来合并 2 个 int 数组:
public static <T> T[] arrayMerge(T[]... arrays)
{
int count = 0;
for (T[] array : arrays) count += array.length;
T[] mergedArray = (T[]) Array.newInstance(arrays[0][0].getClass(),count);
int start = 0;
for (T[] array : arrays) {
System.arraycopy(array, 0, mergedArray, start, array.length);
start += array.length;
}
return (T[]) mergedArray;
}
但我不明白这个函数需要什么参数。我希望它会像 arrayMerge(int[], int[]) 一样工作,但 Eclipse 告诉我它不接受这些参数。 我无法通过 Google 大写 T 找到答案。
您可以在表格或阅读材料中回答,但是使用此函数合并 2 个 int 数组的示例会很好(它是否消除了重复,如果没有,我该如何实现?)。
【问题讨论】:
-
您可以通过使用
Arrays.copyOf()来避免相当丑陋(也很危险)的arrays[0][0],如a previous answer from me 所示。arrays[0][0]的问题有两个:第一个数组 可能 为空,在这种情况下您会得到一个ArrayIndexOutOfBoundsException并且第一个元素可能不是数组的类型 (例如,它可以是Object[]中的Integer),甚至可以是null。