Java Program to Merge Two String Arrays

Introduction

Merging two arrays is a common task in programming. This operation involves combining the elements of two arrays into a single array. In this blog post, we will demonstrate how to merge two string arrays in Java. We will cover different approaches to achieve this task, including using simple loops, the System.arraycopy method, and Java Streams.

Table of Contents

  1. Using a Simple Loop
  2. Using System.arraycopy
  3. Using Java Streams
  4. Complete Example Program
  5. Conclusion

1. Using a Simple Loop

One of the simplest ways to merge two arrays is by using a loop. We iterate through the elements of both arrays and add them to a new array.

Example:

public class MergeArraysUsingLoop {
    public static void main(String[] args) {
        String[] array1 = {"Java", "is", "fun"};
        String[] array2 = {"and", "powerful"};

        // Merging the arrays
        String[] mergedArray = new String[array1.length + array2.length];
        int index = 0;
        for (String element : array1) {
            mergedArray[index++] = element;
        }
        for (String element : array2) {
            mergedArray[index++] = element;
        }

        // Printing the merged array
        System.out.println("Merged Array using Loop: ");
        for (String element : mergedArray) {
            System.out.print(element + " ");
        }
    }
}

Output:

Merged Array using Loop:
Java is fun and powerful

2. Using System.arraycopy

The System.arraycopy method provides a way to copy elements from one array to another. This method is efficient and concise.

Example:

public class MergeArraysUsingArrayCopy {
    public static void main(String[] args) {
        String[] array1 = {"Java", "is", "fun"};
        String[] array2 = {"and", "powerful"};

        // Merging the arrays
        String[] mergedArray = new String[array1.length + array2.length];
        System.arraycopy(array1, 0, mergedArray, 0, array1.length);
        System.arraycopy(array2, 0, mergedArray, array1.length, array2.length);

        // Printing the merged array
        System.out.println("Merged Array using System.arraycopy: ");
        for (String element : mergedArray) {
            System.out.print(element + " ");
        }
    }
}

Output:

Merged Array using System.arraycopy:
Java is fun and powerful

3. Using Java Streams

Java Streams provide a modern and functional approach to merge arrays. The Stream API can be used to concatenate two streams and then convert the result back into an array.

Example:

import java.util.Arrays;
import java.util.stream.Stream;

public class MergeArraysUsingStreams {
    public static void main(String[] args) {
        String[] array1 = {"Java", "is", "fun"};
        String[] array2 = {"and", "powerful"};

        // Merging the arrays
        String[] mergedArray = Stream.concat(Arrays.stream(array1), Arrays.stream(array2))
                                     .toArray(String[]::new);

        // Printing the merged array
        System.out.println("Merged Array using Streams: ");
        for (String element : mergedArray) {
            System.out.print(element + " ");
        }
    }
}

Output:

Merged Array using Streams:
Java is fun and powerful

4. Complete Example Program

Here is a complete program that demonstrates all the methods discussed above to merge two string arrays.

Example Code:

import java.util.Arrays;
import java.util.stream.Stream;

public class MergeStringArrays {
    public static void main(String[] args) {
        String[] array1 = {"Java", "is", "fun"};
        String[] array2 = {"and", "powerful"};

        // Using a Simple Loop
        String[] mergedArrayUsingLoop = mergeUsingLoop(array1, array2);
        System.out.println("Merged Array using Loop: ");
        printArray(mergedArrayUsingLoop);

        // Using System.arraycopy
        String[] mergedArrayUsingArrayCopy = mergeUsingArrayCopy(array1, array2);
        System.out.println("Merged Array using System.arraycopy: ");
        printArray(mergedArrayUsingArrayCopy);

        // Using Java Streams
        String[] mergedArrayUsingStreams = mergeUsingStreams(array1, array2);
        System.out.println("Merged Array using Streams: ");
        printArray(mergedArrayUsingStreams);
    }

    // Method to merge arrays using a simple loop
    public static String[] mergeUsingLoop(String[] array1, String[] array2) {
        String[] mergedArray = new String[array1.length + array2.length];
        int index = 0;
        for (String element : array1) {
            mergedArray[index++] = element;
        }
        for (String element : array2) {
            mergedArray[index++] = element;
        }
        return mergedArray;
    }

    // Method to merge arrays using System.arraycopy
    public static String[] mergeUsingArrayCopy(String[] array1, String[] array2) {
        String[] mergedArray = new String[array1.length + array2.length];
        System.arraycopy(array1, 0, mergedArray, 0, array1.length);
        System.arraycopy(array2, 0, mergedArray, array1.length, array2.length);
        return mergedArray;
    }

    // Method to merge arrays using Java Streams
    public static String[] mergeUsingStreams(String[] array1, String[] array2) {
        return Stream.concat(Arrays.stream(array1), Arrays.stream(array2))
                     .toArray(String[]::new);
    }

    // Method to print the array
    public static void printArray(String[] array) {
        for (String element : array) {
            System.out.print(element + " ");
        }
        System.out.println();
    }
}

Output:

Merged Array using Loop:
Java is fun and powerful
Merged Array using System.arraycopy:
Java is fun and powerful
Merged Array using Streams:
Java is fun and powerful

5. Conclusion

Merging two string arrays in Java can be accomplished in multiple ways, each with its own benefits. The simple loop method is straightforward and easy to understand, while System.arraycopy offers a more concise and efficient approach. Java Streams provide a modern, functional programming style to achieve the same result. By understanding these different methods, you can choose the one that best fits your needs and coding style.

Happy coding!

Comments