数组合并去重的Java实现
引言
在Java编程中,我们经常需要处理数组的合并和去重操作。数组合并是指将两个或多个数组合并为一个新的数组。而数组去重是指删除数组中重复的元素,只保留一个。本文将介绍如何使用Java语言来实现数组的合并和去重操作,并提供相应的代码示例。
数组合并
在Java中,可以通过创建一个新的数组,将待合并的数组逐个拷贝到新数组中来实现数组的合并。下面是一个示例代码:
public class ArrayMerge {
public static int[] mergeArrays(int[] arr1, int[] arr2) {
int len1 = arr1.length;
int len2 = arr2.length;
int[] merged = new int[len1 + len2];
System.arraycopy(arr1, 0, merged, 0, len1);
System.arraycopy(arr2, 0, merged, len1, len2);
return merged;
}
public static void main(String[] args) {
int[] arr1 = {1, 2, 3};
int[] arr2 = {4, 5, 6};
int[] merged = mergeArrays(arr1, arr2);
System.out.println(Arrays.toString(merged));
}
}
上述代码中,mergeArrays
方法接受两个待合并的整型数组arr1
和arr2
,并返回一个新的数组merged
,其中len1
和len2
分别表示两个数组的长度。通过System.arraycopy
方法将arr1
和arr2
的元素拷贝到merged
数组中,然后返回merged
数组。
运行上述代码,输出结果为[1, 2, 3, 4, 5, 6]
,表示数组合并成功。
数组去重
数组去重可以使用集合类来实现,因为集合类中的元素是唯一的。我们可以将待去重的数组转换为一个集合,然后再将集合转换回数组。下面是一个示例代码:
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class ArrayDistinct {
public static int[] distinctArray(int[] arr) {
Set<Integer> set = new HashSet<>();
for (int num : arr) {
set.add(num);
}
int[] distinct = new int[set.size()];
int i = 0;
for (int num : set) {
distinct[i++] = num;
}
return distinct;
}
public static void main(String[] args) {
int[] arr = {1, 2, 3, 2, 4, 5, 6, 5};
int[] distinct = distinctArray(arr);
System.out.println(Arrays.toString(distinct));
}
}
上述代码中,distinctArray
方法接受一个整型数组arr
,通过创建一个HashSet
集合,遍历arr
数组并将元素添加到集合中,实现数组去重。然后创建一个新的数组distinct
,长度为集合的大小,再遍历集合将元素逐个添加到distinct
数组中。最后返回distinct
数组。
运行上述代码,输出结果为[1, 2, 3, 4, 5, 6]
,表示数组去重成功。
数组合并去重
要实现数组的合并和去重操作,可以先将两个数组合并为一个新数组,然后对新数组进行去重。下面是一个示例代码:
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class ArrayMergeDistinct {
public static int[] mergeDistinctArrays(int[] arr1, int[] arr2) {
int len1 = arr1.length;
int len2 = arr2.length;
int[] merged = new int[len1 + len2];
System.arraycopy(arr1, 0, merged, 0, len1);
System.arraycopy(arr2, 0, merged, len1, len2);
Set<Integer> set = new HashSet<>();
for (int num : merged) {
set.add(num);
}
int[] distinct = new int[set.size()];
int i = 0;
for (int num : set) {
distinct[i++] = num;
}
return distinct;
}
public static void main(String[] args) {
int[] arr1 = {1, 2, 3};
int[] arr