简体   繁体   中英

Concatenating two int arrays

I am looking to take two int[] arrays , and concatenate them into a single one. I realize that there are quite a few posts already on here, yet all of them are using more advanced scripts ( System.arraycopy , etc.) that I am not familiar with. I could easily use them, but I lose understanding for why I am using these methods.

My plan looking forward is to set both my arrays to Strings (using the toString() method), and then trace them with a for loop . Each time an integer is found, it prints it onto the end of a new String that is originally initialized to "".

Example (line breaks for spacing):

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

array2 = [5, 6, 7];

array3 = [1, 2, 3, 4, 5, 6, 7]; //this is what array should look like.

Can anyone offer me any advice on my proposed method to fulfilling this part of my work?

You do not need to use strings here. Just get a new array like:

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

Now you can use arraycopy to copy the two arrays or, if you do not like that, just use loops. I guess you already know from elsewhere how to use arraycopy . As for loops, you can two loops, one that runs from 0 to array1.length and copies array1 into array3 and another that runs from 0 to array2.length and copies array2 into array3 beginning beginning from the index array1.length in array3 .

If you want to subsequently print the arrays, use Arrays.toString()

There's no need to use a String . You can just allocate a new array the size of the two others combined, and copy all the values into it:

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

Of course, you could use System.arrayCopy to do the copying more efficiently, but the principal still stands.

if you don't want to use built in methods arraycopy then do it manually. Create a 3rd array with size arr1+arr2 and then loop through both array and store their contents to 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++;
}

You can use ArrayUtils from Apache Commons

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

using Apache Commons Lang library

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM