
In this tutorial we will go over different ways we can join Java Arrays.
If you have any of below questions then you are at right place:
- How can I concatenate two arrays in Java?
- How to Merge Two Arrays in Java?
- 3 Ways to Combine Arrays in Java
- Join Array of Primitives with Separator in Java
Here are the three ways you could you could join arrays in Java.
- Join Array using Apache Common utility
- Join Array using Java8 Stream operation
- Join Array using Standard Java APIs
Let’s get started:
Create java class CrunchifyJoinArrays3Ways.java.
Put below Java code into file.
package crunchify.com.tutorial;
import org.apache.commons.lang3.ArrayUtils;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.stream.IntStream;
import java.util.stream.Stream;
/**
* @author Crunchify.com
* <p>
* In Java how to join Arrays? 3 ways: Apache Commons ArrayUtils, Java 8 Streams and Simple APIs.
* Version: 1.0.3
*/
public class CrunchifyJoinArrays3Ways {
public static void main(String[] args) {
crunchifyPrint("Original String Array1: [google, twitter]");
crunchifyPrint("Original String Array2: [apple, microsoft]");
crunchifyPrint("Original Integer Array1: [111, 444]");
crunchifyPrint("Original Integer Array2: [222, 555]\n");
// Join Array using Apache Common utility
joinArrayUsingApacheCommon();
// Join Array using Java8 Stream operation
joinArrayUsingJava8Stream();
// Join Array using Standard Java APIs
joinArrayUsingJavaAPI();
}
// Method-1: Join Array using Apache Common utility
private static void joinArrayUsingApacheCommon() {
String[] company1 = new String[]{"google", "twitter"};
String[] company2 = new String[]{"apple", "microsoft"};
// from org.apache.commons.lang3 maven dependency
String[] crunchifyResult = ArrayUtils.addAll(company1, company2);
crunchifyPrint("From Method-1: addAll() - String ==> " + Arrays.toString(crunchifyResult));
int[] crunchifyArray1 = new int[]{111, 444};
int[] crunchifyArray2 = new int[]{222, 555};
int[] crunchifyResult2 = ArrayUtils.addAll(crunchifyArray1, crunchifyArray2);
crunchifyPrint("From Method-1: addAll() - Integer ==> " + Arrays.toString(crunchifyResult2));
}
// Simple Java Print Method
private static void crunchifyPrint(String result) {
System.out.println(result);
}
// Method-2: Join Array using Java8 Stream operation
private static void joinArrayUsingJava8Stream() {
String[] company1 = new String[]{"google", "twitter"};
String[] company2 = new String[]{"apple", "microsoft"};
// Stream.of() - returns a sequential ordered stream whose elements are the specified values.
// A sequence of elements supporting sequential and parallel aggregate operations. The following example illustrates an aggregate operation using Stream and IntStream:
//
// int sum = widgets.stream()
// .filter(w -> w.getColor() == RED)
// .mapToInt(w -> w.getWeight())
// .sum();
String[] result = Stream.of(company1, company2).flatMap(Stream::of).toArray(String[]::new);
crunchifyPrint("\nFrom Method-2: Stream.of() ==> " + Arrays.toString(result));
int[] crunchifyArray1 = new int[]{111, 444};
int[] crunchifyArray2 = new int[]{222, 555};
// Arrays.stream() - returns a sequential IntStream with the specified array as its source.
int[] crunchifyResult2 = IntStream.concat(Arrays.stream(crunchifyArray1), Arrays.stream(crunchifyArray2)).toArray();
crunchifyPrint("From Method-2: IntStream.concat() ==> " + Arrays.toString(crunchifyResult2));
}
// Method-3: Join Array using Standard Java APIs
private static void joinArrayUsingJavaAPI() {
String[] company1 = new String[]{"google", "twitter"};
String[] company2 = new String[]{"apple", "microsoft"};
String[] crunchifyResult = crunchifyJoinGenericArray(company1, company2);
crunchifyPrint("\nFrom Method-3: crunchifyJoinArrayusingGeneric() ==> " + Arrays.toString(crunchifyResult));
int[] crunchifyArray1 = new int[]{111, 444};
int[] crunchifyArray2 = new int[]{222, 555};
int[] crunchifyResult2 = crunchifyJoinIntegerArray(crunchifyArray1, crunchifyArray2);
// Arrays.toString() Returns a string representation of the contents of the specified array.
// The string representation consists of a list of the array's elements, enclosed in square brackets ("[]").
// Adjacent elements are separated by the characters ", " (a comma followed by a space).
// Elements are converted to strings as by String.valueOf(int). Returns "null" if a is null.
crunchifyPrint("From Method-3: joinArray() ==> " + Arrays.toString(crunchifyResult2));
}
@SafeVarargs
private static <T> T[] crunchifyJoinGenericArray(T[]... crunchifyArrays) {
int crunchify = 0;
for (T[] crunchifyArray : crunchifyArrays) {
crunchify += crunchifyArray.length;
}
//T[] result = new T[crunchify];
final T[] crunchifyResult = (T[]) Array.newInstance(crunchifyArrays[0].getClass().getComponentType(),
crunchify);
int crunchifyOffset = 0;
for (T[] crunchifyArray : crunchifyArrays) {
// Copies an array from the specified source array, beginning at the specified position, to the specified position of the destination array.
// A subsequence of array components are copied from the source array referenced by src to the destination array referenced by dest.
// The number of components copied is equal to the length argument.
// The components at positions srcPos through srcPos+length-1 in the source array are copied into positions destPos through destPos+length-1, respectively, of the destination array.
System.arraycopy(crunchifyArray, 0, crunchifyResult, crunchifyOffset, crunchifyArray.length);
crunchifyOffset += crunchifyArray.length;
}
return crunchifyResult;
}
private static int[] crunchifyJoinIntegerArray(int[]... crunchifyArrays) {
int crunchify = 0;
for (int[] crunchifyArray : crunchifyArrays) {
crunchify += crunchifyArray.length;
}
final int[] crunchifyResult = new int[crunchify];
int crunchifyOffset = 0;
for (int[] crunchifyArray : crunchifyArrays) {
System.arraycopy(crunchifyArray, 0, crunchifyResult, crunchifyOffset, crunchifyArray.length);
crunchifyOffset += crunchifyArray.length;
}
return crunchifyResult;
}
}
Let’s take a look at some of Java API details.
java.lang.System.arraycopy():

java.util.Arrays.toString():

java.util.stream():


Just run program as a Java Program and you should see a result same as below.
IntelliJ IDEA console output:
/Library/Java/JavaVirtualMachines/jdk-15.jdk/Contents/Home/bin/java -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=50249:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Users/app/crunchify/github/CrunchifyTutorials/target/classes:/Users/app/crunchify/github/CrunchifyTutorials/WebContent/WEB-INF/lib/zxing-2.1.jar/Users/app/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar/spring-context-support-5.1.3.RELEASE.jar crunchify.com.tutorial.CrunchifyJoinArrays3Ways Original String Array1: [google, twitter] Original String Array2: [apple, microsoft] Original Integer Array1: [111, 444] Original Integer Array2: [222, 555] From Method-1: addAll() - String ==> [google, twitter, apple, microsoft] From Method-1: addAll() - Integer ==> [111, 444, 222, 555] From Method-2: Stream.of() ==> [google, twitter, apple, microsoft] From Method-2: IntStream.concat() ==> [111, 444, 222, 555] From Method-3: crunchifyJoinArrayusingGeneric() ==> [google, twitter, apple, microsoft] From Method-3: joinArray() ==> [111, 444, 222, 555] Process finished with exit code 0
Please let me know if you have any other way to merge Java Arrays or you get any exception.
The post In Java how to join Arrays? 3 ways: Apache Commons ArrayUtils, Java 8 Streams and Simple APIs appeared first on Crunchify.
0 Commentaires