在Java中,获取数组中不重复元素的方法有多种,以下是几种常见的方法:
1. 使用`HashSet`:
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
int[] array = {1, 2, 3, 2, 4, 5, 1, 6, 6};
HashSet
set = new HashSet<>(); for (int num : array) {
set.add(num);
}
for (int element : set) {
System.out.println(element);
}
}
}
2. 使用`Arrays.stream().distinct().toArray()`:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] array = {1, 2, 3, 2, 4, 5, 1, 6, 6};
int[] distinctArray = Arrays.stream(array).distinct().toArray();
System.out.println(Arrays.toString(distinctArray));
}
}
3. 使用`LinkedHashSet`以保持插入顺序:
import java.util.LinkedHashSet;
public class Main {
public static void main(String[] args) {
int[] array = {1, 2, 3, 2, 4, 5, 1, 6, 6};
LinkedHashSet
set = new LinkedHashSet<>(); for (int num : array) {
set.add(num);
}
int[] distinctArray = new int[set.size()];
int index = 0;
for (Integer num : set) {
distinctArray[index++] = num;
}
System.out.println(Arrays.toString(distinctArray));
}
}
4. 使用`HashMap`去重:
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
int[] array = {1, 2, 3, 2, 4, 5, 1, 6, 6};
HashMap
map = new HashMap<>(); for (int num : array) {
map.put(num, null);
}
int[] distinctArray = new int[map.size()];
int index = 0;
for (int num : map.keySet()) {
distinctArray[index++] = num;
}
System.out.println(Arrays.toString(distinctArray));
}
}
5. 使用`TreeSet`去重并保持排序:
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
int[] array = {1, 2, 3, 2, 4, 5, 1, 6, 6};
TreeSet
set = new TreeSet<>(); for (int num : array) {
set.add(num);
}
System.out.println(set);
}
}
以上方法都可以用来从数组中去除重复元素。选择哪种方法取决于你对元素顺序的保留需求以及是否希望保持原始数组的顺序。如果不需要保持顺序,`HashSet`和`HashMap`是很好的选择;如果需要保持原始顺序,`LinkedHashSet`和`TreeSet`会是更合适的选择。使用`Arrays.stream().distinct().toArray()`方法则更为简洁,适用于Java 8及以上版本