面试中被问到:如果一个数组中有重复元素,用什么方法可以去重?想了想貌似方法还不少,现在就总结一下。
1. 用 List 集合实现
public static void main(String[] args) {
int[] intArr2 = {2,4,5,6,1,1,2,6,7};
List<Integer> list = new ArrayList<>();
for (int i : intArr) {
if(!list.contains(i)) {
list.add(i);
}
}
System.out.println(list.toString());
}
// 输出结果
[2, 4, 5, 6, 1, 7]
2. 用 Set 集合实现
public static void main(String[] args) {
Integer[] intArr = {2,4,5,6,1,1,2,6,7};
int[] intArr2 = {2,4,5,6,1,1,2,6,7};
// 数组类型为包装类类型
Set<Integer> set = new TreeSet<>(Arrays.asList(intArr));
for (int i : intArr) {
set.add(i);
}
System.out.println(set.toString());
// 数组类型为基本数据类型
Set<Integer> set2 = new TreeSet<>();
for (int i : intArr2) {
set2.add(i);
}
System.out.println(set2.toString());
}
// 输出结果
[1, 2, 4, 5, 6, 7]
[1, 2, 4, 5, 6, 7]
可以看到 set 不进去除了重复数据,而且还将数据进行了排序。而这一切都是 treeset 的功劳。