2012-05-28 26 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”作为您的答案,它将不允许重复的对象。这是您可以预期的典型标准问题。