Java函数实现数组元素去重方法
发布时间:2023-10-03 01:51:48
在Java中,可以使用多种方法实现数组元素去重。下面将介绍几种常见的实现方式。
方法一:使用HashSet
HashSet是Java中的一个集合类,它可以存储不重复的元素。我们可以利用HashSet的特性,将数组元素逐个添加到HashSet中,并通过HashSet的toArray()方法获取去重后的数组。
import java.util.HashSet;
public class ArrayDuplicateRemoval {
public static int[] removeDuplicates(int[] arr) {
HashSet<Integer> set = new HashSet<>();
for (int i = 0; i < arr.length; i++) {
set.add(arr[i]);
}
int[] result = new int[set.size()];
int index = 0;
for (int num : set) {
result[index++] = num;
}
return result;
}
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 2, 3, 5};
int[] result = removeDuplicates(arr);
for (int num : result) {
System.out.print(num + " ");
}
}
}
方法二:使用LinkedHashSet
LinkedHashSet是HashSet的一个子类,它可以保持插入顺序。我们可以利用LinkedHashSet的特性,先将数组元素逐个添加到LinkedHashSet中,再通过LinkedHashSet的toArray()方法获取去重后的数组。
import java.util.LinkedHashSet;
public class ArrayDuplicateRemoval {
public static int[] removeDuplicates(int[] arr) {
LinkedHashSet<Integer> set = new LinkedHashSet<>();
for (int i = 0; i < arr.length; i++) {
set.add(arr[i]);
}
int[] result = new int[set.size()];
int index = 0;
for (int num : set) {
result[index++] = num;
}
return result;
}
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 2, 3, 5};
int[] result = removeDuplicates(arr);
for (int num : result) {
System.out.print(num + " ");
}
}
}
方法三:使用循环遍历
我们可以使用两个循环嵌套来完成去重操作。外层循环遍历数组的每个元素,内层循环判断该元素是否在之前的元素中出现过,若出现过则移动后面的元素向前一个位置,直到遍历完整个数组。
public class ArrayDuplicateRemoval {
public static int[] removeDuplicates(int[] arr) {
int len = arr.length;
for (int i = 0; i < len; i++) {
for (int j = i + 1; j < len; j++) {
if (arr[i] == arr[j]) {
for (int k = j; k < len - 1; k++) {
arr[k] = arr[k + 1];
}
len--;
j--;
}
}
}
int[] result = new int[len];
System.arraycopy(arr, 0, result, 0, len);
return result;
}
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 2, 3, 5};
int[] result = removeDuplicates(arr);
for (int num : result) {
System.out.print(num + " ");
}
}
}
方法四:使用Stream API
Java 8引入了Stream API,我们可以利用Stream的distinct()方法来去重数组元素。
import java.util.Arrays;
public class ArrayDuplicateRemoval {
public static int[] removeDuplicates(int[] arr) {
return Arrays.stream(arr).distinct().toArray();
}
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 2, 3, 5};
int[] result = removeDuplicates(arr);
for (int num : result) {
System.out.print(num + " ");
}
}
}
以上是四种常见的方法实现数组元素去重。根据实际需求和数据规模,可以选择合适的方法进行处理。
