2012-05-28 56 views
1

我在面試中被問到從列表中刪除重複的學生對象,其中學生對象可能包含不同的屬性,條件是我不應該使用任一組或hashmap。如何從列表中刪除dulipate對象

+0

謝謝alex lockwood – Mohan

+1

總是樂意幫忙;) –

回答

1
  1. 對列表排序。
  2. 遍歷整個列表,檢查當前對象是否與鄰居相等。

這需要O(n * log(n))對列表和O(n)進行排序來遍歷排序列表。因此,總運行時間複雜度爲O(n * log(n))+ O(n)= O(n * log(n))

+0

但是如何刪除重複的那種方式 – Mohan

+0

當您在列表中迭代時,您可以刪除元素(您需要小心如何實現這一點,以便您不要不會意外跳過任何元素)。如果某個元素與其鄰居相同,則將其刪除並繼續。如果找不到相等的鄰居,則列表中的每個元素必須是唯一的。 –

+0

是更好的任何其他方式,這是唯一的技術 – Mohan

1

排序ArrayList並循環遍歷。但是,你如何定義重複的對象?相同的參考或具有相同的屬性?

0

您可以通過比較學生對象的參考來檢查它。

0

在列表中沒有直接刪除重複的方法。刪除重複的最快方法是設置。在列表中刪除重複,你將不得不重寫hashcode()和equals()方法,然後將不得不遍歷整個列表的一個對象。

0

可能是您的面試官試圖讓「java.util.Set」作爲您的答案,它將不允許重複的對象。這是您可以預期的典型標準問題。