Without using a List or Set or any third party library (Java 101 homework ready):
java
int[] arr1 = { 1, 6, -6, -9, 3, 4, -8, -7 };
int[] arr2 = { 5, 3, 2, 1, 70, 6, 7, -9, 99, 81 };
// Create a boolean array with the same length as the first array.
boolean[] duplicates = new boolean[arr1.length];
// Counter for how many duplicates we found.
int numDuplicates = 0;
// Loop through the first array and get all duplicates.
for (int i = 0; i < arr1.length; i++) {
boolean duplicate = false;
for (int j = 0; j < arr2.length; j++) {
if (arr1[i] == arr2[j]) {
duplicate = true;
numDuplicates++;
break;
}
}
duplicates[i] = duplicate;
}
// The length of the merged array will be the two lengths subtracted by the number of
// duplicates we found.
int[] mergedArray = new int[arr1.length + arr2.length - numDuplicates];
int index = 0;
// loop through the first array. Don't add it to the merged array if it is a duplicate.
for (int i = 0; i < arr1.length; i++) {
if (!duplicates[i]) {
mergedArray[index] = arr1[i];
index++;
}
}
// loop through the second array and add all items.
for (int i = 0; i < arr2.length; i++) {
mergedArray[index] = arr2[i];
index++;
}
// optional. sort array
Arrays.sort(mergedArray);
System.out.println(Arrays.toString(mergedArray));
Output:
json
[-9, -8, -7, -6, 1, 2, 3, 4, 5, 6, 7, 70, 81, 99]
Using Set:
java
public static int[] mergeArrays(int[] arr1, int[] arr2) {
Set<Integer> set = new HashSet<Integer>();
for (int x : arr1) {
set.add(x);
}
for (int x : arr2) {
set.add(x);
}
int[] result = new int[set.size()];
int index = 0;
for (Iterator<Integer> it = set.iterator(); it.hasNext();) {
result[index] = it.next();
index++;
}
return result;
}
Using List:
java
public static int[] mergeArrays(int[] arr1, int[] arr2) {
List<Integer> list = new ArrayList<Integer>();
for (int i = 0, length = arr1.length; i < length; i++) {
list.add(arr1[i]);
}
for (int i = 0, length = arr2.length; i < length; i++) {
if (!list.contains(arr2[i])) {
list.add(arr2[i]);
}
}
int length = list.size();
int[] result = new int[length];
for (int i = 0; i < length; i++) {
result[i] = list.get(i);
}
return result;
}