In this article, we will discuss how to merge or concatenate 2 Arrays of same type. In one of the previous article, we already discussed about merging 2 String[] Arrays but here we are going to discuss different approach.
Merging or Concatenating 2 Arrays :
Instead of simply merging by converting Arrays into different collection, we are going to discuss removing duplicates & sorting after merging
- Merging 2 Arrays
- Merging 2 Arrays and removing duplicates
- Merging 2 Arrays and removing duplicates and sorting
- Merging 2 Arrays and returning merged Array
1. Merging 2 Arrays :
- There are 2 String[] Arrays defined and some names are repeated in both Arrays
- We are going to convert 1st String[] Array into List, after creating List object of String type
- Add 2nd String[] Array to List using addAll(); method
- Now List contains all names from both String[] Arrays with duplicates as per insertion-order
MergeTwoArrays.java
package in.bench.resources.merge.arrays;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MergeTwoArrays {
public static void main(String[] args) {
// String[] array 1
String[] names1 = {
"Balazs",
"Vikrant",
"Mohasin",
"Ahmed"
};
// print 1st String[] Array to console
System.out.println("String[] Array 1 - \n" + Arrays.toString(names1));
// String[] array 1
String[] names2 = {
"Vihar",
"Balazs",
"Roshan",
"Vikrant"
};
// print 2nd String[] Array to console
System.out.println("\nString[] Array 2 - \n" + Arrays.toString(names2));
// convert first String[] Array to List
List<String> names = new ArrayList<String>(Arrays.asList(names1));
// add second String[] Array to List using addAll(); method
names.addAll(Arrays.asList(names2));
// print merged String[] Array to console
System.out.println("\nAfter merging both String[] Array - \n" + names);
}
}
Output:
String[] Array 1 -
[Balazs, Vikrant, Mohasin, Ahmed]
String[] Array 2 -
[Vihar, Balazs, Roshan, Vikrant]
After merging both String[] Array -
[Balazs, Vikrant, Mohasin, Ahmed, Vihar, Balazs, Roshan, Vikrant]
2. Merging 2 Arrays and removing duplicates :
- There are 2 String[] Arrays defined and some names are repeated in both Arrays
- We are going to convert 1st String[] Array into Set, after creating Set object of String type
- Add 2nd String[] Array to Set using addAll(); method
- Now Set contains all unique names from both String[] Arrays after removing duplicates in random-order
MergeTwoArraysAndRemoveDuplicates.java
package in.bench.resources.merge.arrays;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class MergeTwoArraysAndRemoveDuplicates {
public static void main(String[] args) {
// String[] array 1
String[] names1 = {
"Balazs",
"Vikrant",
"Mohasin",
"Ahmed"
};
// print 1st String[] Array to console
System.out.println("String[] Array 1 - \n" + Arrays.toString(names1));
// String[] array 1
String[] names2 = {
"Vihar",
"Balazs",
"Roshan",
"Vikrant"
};
// print 2nd String[] Array to console
System.out.println("\nString[] Array 2 - \n" + Arrays.toString(names2));
// convert first String[] Array to Set
Set<String> names = new HashSet<String>(Arrays.asList(names1));
// add second String[] Array to Set using addAll(); method
names.addAll(Arrays.asList(names2));
// print merged/unique String[] Array to console
System.out.println("\nAfter merging and removing duplicates from both String[] Array - \n"
+ names);
}
}
Output:
String[] Array 1 -
[Balazs, Vikrant, Mohasin, Ahmed]
String[] Array 2 -
[Vihar, Balazs, Roshan, Vikrant]
After merging and removing duplicates from both String[] Array -
[Vikrant, Roshan, Ahmed, Balazs, Vihar, Mohasin]
3. Merging 2 Arrays and Removing duplicates and Sorting :
- There are 2 String[] Arrays defined and some names are repeated in both Arrays
- We are going to convert 1st String[] Array into Set, after creating Set object of String type
- Add 2nd String[] Array to Set using addAll(); method
- Now Set contains all unique names from both String[] Arrays after removing duplicates in random-order
- For sorting, convert Set into List using inter-conversion constructor
- Finally, we will be sorting the List elements using Collections.sort(list); to print names to console in alphabetical-order
MergeTwoArraysRemoveDuplicatesAndSort.java
package in.bench.resources.merge.arrays;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class MergeTwoArraysRemoveDuplicatesAndSort {
public static void main(String[] args) {
// String[] array 1
String[] names1 = {
"Balazs",
"Vikrant",
"Mohasin",
"Ahmed"
};
// print 1st String[] Array to console
System.out.println("String[] Array 1 - \n" + Arrays.toString(names1));
// String[] array 1
String[] names2 = {
"Vihar",
"Balazs",
"Roshan",
"Vikrant"
};
// print 2nd String[] Array to console
System.out.println("\nString[] Array 2 - \n" + Arrays.toString(names2));
// convert first String[] Array to Set
Set<String> names = new HashSet<String>(Arrays.asList(names1));
// add second String[] Array to Set using addAll(); method
names.addAll(Arrays.asList(names2));
// convert Set to List for sorting
List<String> list = new ArrayList<String>(names);
// sorting names in alphabetical order
Collections.sort(list);
// print merged/unique String[] Array in ascending order
System.out.println("\nSorted String[] Array - After merging and removing duplicates - \n"
+ list);
}
}
Output:
String[] Array 1 -
[Balazs, Vikrant, Mohasin, Ahmed]
String[] Array 2 -
[Vihar, Balazs, Roshan, Vikrant]
Sorted String[] Array - After merging and removing duplicates -
[Ahmed, Balazs, Mohasin, Roshan, Vihar, Vikrant]
4. Merging 2 Arrays and Returning Merged Array:
- There are 2 String[] Arrays defined and some names are repeated in both Arrays
- A static method “mergeArrays” defined to accept 2 String[] Arrays as arguments and returns single merged String[] Array
- Inside this method,
- We are going to convert 1st String[] Array into Set, after creating Set object of String type
- Add 2nd String[] Array to Set using addAll(); method
- Now Set contains all unique names from both String[] Arrays after removing duplicates in random-order
- Finally, convert Set into Array using toArray(); method passing “new String[0]” as argument and return single merged String[] Array to calling method
MergeTwoArraysAndReturnArray.java
package in.bench.resources.merge.arrays;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class MergeTwoArraysAndReturnArray {
public static void main(String[] args) {
// String[] array 1
String[] names1 = {
"Balazs",
"Vikrant",
"Mohasin",
"Ahmed"
};
// print 1st String[] Array to console
System.out.println("String[] Array 1 - \n" + Arrays.toString(names1));
// String[] array 1
String[] names2 = {
"Vihar",
"Balazs",
"Roshan",
"Vikrant"
};
// print 2nd String[] Array to console
System.out.println("\nString[] Array 2 - \n" + Arrays.toString(names2));
// invoke mergeArrays() method
String[] mergedArray = mergeArrays(names1, names2);
// print merged String[] Array to console
System.out.println("\nAfter merging both String[] Array - \n"
+ Arrays.toString(mergedArray));
}
// mergeArrays() method
public static String[] mergeArrays(String[] strArray1, String[] strArray2) {
// convert first String[] Array to Set
Set<String> names = new HashSet<String>(Arrays.asList(strArray1));
// add second String[] Array to Set using addAll(); method
names.addAll(Arrays.asList(strArray2));
// return String[]
return names.toArray(new String[0]);
}
}
Output:
String[] Array 1 -
[Balazs, Vikrant, Mohasin, Ahmed]
String[] Array 2 -
[Vihar, Balazs, Roshan, Vikrant]
After merging both String[] Array -
[Vikrant, Roshan, Ahmed, Balazs, Vihar, Mohasin]
Hope, everyone found this article very useful while converting multiple Arrays into single Array. In the following article, we are going to repeat same examples/concepts using Java 8 Stream APIs.
Related Articles:
- Java – Merging 2 Arrays using List/Set approach
- Java – Concatenating 2 Arrays using Third Arrays approach
- Java 8 – Merging two or more Stream of elements
- Java 8 – How to Merge or Concatenate 2 Arrays using Stream API ?
References:
- https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html
- https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html
- https://docs.oracle.com/javase/8/docs/api/java/util/List.html
- https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html
- https://docs.oracle.com/javase/8/docs/api/java/util/Set.html
- https://docs.oracle.com/javase/8/docs/api/java/util/HashSet.html
- https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html
Happy Coding !!
Happy Learning !!