1

我在面试中被要求从列表中删除重复的学生对象,其中学生对象可能包含不同的属性,条件是我不应该使用 set 或 hashmap。

4

5 回答 5

1

对 ArrayList 进行排序并循环遍历。但是如何定义重复对象?相同的引用还是具有相同的属性?

于 2012-05-28T04:43:07.430 回答
1
  1. 对列表进行排序。
  2. 遍历列表,检查当前对象是否等于其邻居。

这需要 O(n*log(n)) 来对列表进行排序,并且需要 O(n) 来遍历排序的列表。

因此,总运行时复杂度为 O(n*log(n)) + O(n) = O(n*log(n))

于 2012-05-28T04:43:58.070 回答
0

您可以通过比较学生对象的引用来检查它。

于 2012-05-28T04:44:50.390 回答
0

在 List 中没有删除重复项的直接方法。删除重复项最快的方法是 Sets。在要删除重复项的列表中,您必须覆盖 hashcode() 和 equals() 方法,然后必须为一个对象迭代整个列表。

于 2012-05-28T06:00:35.253 回答
0

可能您的面试官试图从您那里获得“java.util.Set”作为不允许重复对象的答案。这是您可以期待的典型标准问题。

于 2012-05-28T06:05:33.550 回答