连接两个int数组

时间:2014-03-28 16:33:17

标签: java

我希望选择两个int[] arrays,并将它们连接成一个。{1}}。我意识到这里已经发布了不少帖子,但他们都使用了我不熟悉的更高级脚本(System.arraycopy等)。我可以很容易地使用它们,但我不知道为什么我使用这些方法。

我期待的计划是将我的数组设置为Strings(使用toString()方法),然后使用for loop跟踪它们。每次找到整数时,它都会将其打印到最初初始化为""的新String的末尾。

示例(间距换行符):

array1 = [1,2,3,4];

array2 = [5,6,7];

array3 = [1,2,3,4,5,6,7]; //这就是数组的样子。

任何人都可以就我提出的方法向我提出任何建议来完成这部分工作吗?

5 个答案:

答案 0 :(得分:3)

您不需要在此处使用字符串。只需获得一个新的数组:

int[] array3 = new int[array1.length + array2.length];

现在您可以使用arraycopy复制两个数组,或者如果您不喜欢这样,只需使用循环。我猜你已经从其他地方知道如何使用arraycopy。至于循环,你可以有两个循环,一个从0array1.length,从array1复制到array3,另一个从0到{{}从array2.length中的索引array2开始,将array3复制到array1.length

如果要随后打印阵列,请使用Arrays.toString()

答案 1 :(得分:3)

无需使用String。您可以只分配一个与其他两个组合的大小的新数组,并将所有值复制到其中:

int[] array1 = ...;
int[] array2 = ...;
int[] result = new int[array1.length + array2.length];
for (int i = 0; i < array1.length; ++i) {
    result[i]  = array1[i];
}
for (int i = 0; i < array2.length; ++i) {
    result[array1.length + i] = array2[i];
}

当然,您可以使用System.arrayCopy更有效地进行复制,但校长仍然有效。

答案 2 :(得分:1)

如果您不想使用内置方法arraycopy,请手动执行。创建一个大小为arr1+arr2的第三个数组,然后遍历两个数组并将其内容存储到arr3。像

int size = arr1.length + arr2.length;
int indexval=0;
int[] arr3 = new int[size];

for(int i=0;i<arr1.length;i++)
{
 arr3[i] = arr1[i];
 indexval++;
}

for(int i=0,i<arr2.length;i++)
{
  arr3[indexval] = arr2[i];
  indexval++;
}

答案 3 :(得分:0)

您可以使用Apache Commons的ArrayUtils

int [] array1 = {1,2,3, 4};
int [] array2 = {5,6,7};
int [] array3 = ArrayUtils.addAll(array1, array2);

答案 4 :(得分:0)

使用Apache Commons Lang库

int[] array1 = { 1, 2, 3, 4, 5 };
int[] array2 = { 6, 7, 8, 9, 10 };

int[] array3 = ArrayUtils.addAll(array1, array2);

http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/ArrayUtils.html#addAll(int [],int [])