2014-03-28 119 views
2

我正在寻找两个int[] arrays,并将它们连接成一个。我意识到这里已经有不少帖子,但他们都使用了我不熟悉的更高级脚本(System.arraycopy等)。我可以很容易地使用它们,但是我为什么使用这些方法却失去了理解。连接两个int数组

我期待的计划是将我的阵列设置为Strings(使用toString()方法),然后使用for loop跟踪它们。每找到一个整数,它就会将其打印到最初初始化为“”的新字符串的末尾。

实施例(换行符为间隔):

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

array2 = [5,6,7];

array3 = [1,2,3,4,5,6,7]; //这是数组应该看起来像。

任何人都可以提供任何建议,我提议的方法来履行我的工作的这一部分?

+0

从问题标题/标题中删除了'(Student)'。这不是必需的。 – Rahul

+0

你为什么要用toString()?你想连接两个数组还是打印它们的元素? – Juggernaut93

+0

请原谅我可怜的解释。是的,我想在组合它们之后打印数组。 – Rivers31334

回答

3

这里不需要使用字符串。刚刚得到一个新的数组,如:

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

现在你可以使用arraycopy两个阵列复制或,如果你不喜欢的是,仅仅使用循环。我想你已经从别处知道如何使用arraycopy。至于循环,可以两个循环,一个运行从0array1.length和复印件array1array3,另一种是从运行到0array2.length副本array2array3开始从索引中array1.length开始array3

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

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更有效地完成复制,但主要仍然有效。

+0

奇妙的逻辑。非常感谢。 – Rivers31334

0

您可以使用Apache Commons Lang中使用库ArrayUtils从Apache的百科全书

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

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 [])

1

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

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++; 
}