Java – How to join Arrays

Java – How to join Arrays

In this article, we will show you a few ways to join a Java Array.

Apache Commons Lang – ArrayUtils
Java API
Java 8 Stream
1. Apache Commons Lang – ArrayUtils
The simplest way is add the Apache Commons Lang library, and use ArrayUtils. addAll to join arrays. This method supports both primitive and object type arrays.

JoinArray.java
package com.mkyong.example.array;

import org.apache.commons.lang3.ArrayUtils;

import java.util.Arrays;

public class JoinArray {

public static void main(String[] args) {

String[] s1 = new String[]{"a", "b", "c"};
String[] s2 = new String[]{"d", "e", "f"};

String[] result = ArrayUtils.addAll(s1, s2);

System.out.println(Arrays.toString(result));

int [] int1 = new int[]{1,2,3};
int[] int2 = new int[]{4,5,6};

int[] result2 = ArrayUtils.addAll(int1, int2);

System.out.println(Arrays.toString(result2));

}

}

Output

[a, b, c, d, e, f]
[1, 2, 3, 4, 5, 6]
For Maven user.

pom.xml
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>


2. Java API
Pure Java API example, supports both primitive and generic types.

JoinArray.java
package com.mkyong.example.array;

import java.lang.reflect.Array;
import java.util.Arrays;

public class JoinArray {

public static void main(String[] args) {

String[] s1 = new String[]{"a", "b", "c"};
String[] s2 = new String[]{"d", "e", "f"};
String[] s3 = new String[]{"g", "h", "i"};

String[] result = joinArrayGeneric(s1, s2, s3);

System.out.println(Arrays.toString(result));

int[] int1 = new int[]{1, 2, 3};
int[] int2 = new int[]{4, 5, 6};
int[] int3 = new int[]{7, 8, 9};

int[] result2 = joinArray(int1, int2, int3);

System.out.println(Arrays.toString(result2));

}

static <T> T[] joinArrayGeneric(T[]... arrays) {
int length = 0;
for (T[] array : arrays) {
length += array.length;
}

//T[] result = new T[length];
final T[] result = (T[]) Array.newInstance(arrays[0].getClass().getComponentType(), length);

int offset = 0;
for (T[] array : arrays) {
System.arraycopy(array, 0, result, offset, array.length);
offset += array.length;
}

return result;
}

static int[] joinArray(int[]... arrays) {
int length = 0;
for (int[] array : arrays) {
length += array.length;
}

final int[] result = new int[length];

int offset = 0;
for (int[] array : arrays) {
System.arraycopy(array, 0, result, offset, array.length);
offset += array.length;
}

return result;
}

//create other overloaded primitive type - long, double...
//static long[] joinArray(long[]... arrays)
}

Output

[a, b, c, d, e, f, g, h, i]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

3. Java 8 Stream
Java 8 Stream example to join arrays.

JoinArray.java
package com.mkyong.example.array;

import java.util.Arrays;

import java.util.stream.IntStream;
import java.util.stream.Stream;

public class JoinArray {

public static void main(String[] args) {

String[] s1 = new String[]{"a", "b", "c"};
String[] s2 = new String[]{"d", "e", "f"};
String[] s3 = new String[]{"g", "h", "i"};

//join object type array
String[] result = Stream.of(s1, s2, s3).flatMap(Stream::of).toArray(String[]::new);
System.out.println(Arrays.toString(result));

int [] int1 = new int[]{1,2,3};
int[] int2 = new int[]{4,5,6};
int[] int3 = new int[]{7,8,9};

//join 2 primitive type array
int[] result2 = IntStream.concat(Arrays.stream(int1), Arrays.stream(int2)).toArray();

//join 3 primitive type array, any better idea?
int[] result3 = IntStream.concat(Arrays.stream(int1),
IntStream.concat(Arrays.stream(int2), Arrays.stream(int3))).toArray();

System.out.println(Arrays.toString(result2));

System.out.println(Arrays.toString(result3));

}

}
Output

[a, b, c, d, e, f, g, h, i]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Any better Java 8 Stream example? Do comment below.

 

 

from:http://www.mkyong.com/java/java-how-to-join-arrays/

posted @ 2018-12-09 20:02  BloggerSb  阅读(747)  评论(0编辑  收藏  举报