今日去面试,被问到要求手写一段代码,实现去除数组中重复的元素。我的第一反应是用 Set,因为 Set中的元素是不能重复的,但是大叔又说不让用 Set。明明感觉很简单的一个算法题,但是最后也没能写的让人满意。
于是回来总结了以下两种方法来实现:
1. 利用 List 的 contains() 方法:
package com.czq.text;
import java.util.ArrayList;
import java.util.List;
public class RemoveSameNum2 {
public static void main(String[] args) {
int[] attr = { 1, 2, 3, 3, 5, 5, 7, 9 };
List<Integer> list = new ArrayList<Integer>();
for (int i : attr) {
if (!list.contains(i)) {//boolean contains(Object o):如果列表包含指定的元素,则返回 true
list.add(i);
}
}
System.out.println(list);
}
}
2. 使用 Set 接口:
package com.czq.text;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class RemoveSameNum {
public static void main(String[] args) {
int[] attr = { 1, 2, 3, 3, 5, 5, 7, 9 };
List<Integer> list = new ArrayList<Integer>();
for (int i : attr) {
list.add(i);
}
Set<Integer> set = new HashSet<Integer>();
set.addAll(list);
System.out.println(set);
}
}
经过测试,以上两种方法均能正确输出:
[1, 2, 3, 5, 7, 9]