Java去除數組中重複元素的兩種實現

今日去面試,被問到要求手寫一段代碼,實現去除數組中重複的元素。我的第一反應是用 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]

           


点赞