如何在不使用set的情况下维护唯一对象列表?

时间:2017-07-25 19:04:55

标签: java

假设我们有两个员工实例,它们有一些共同的属性,如id,name,address(所有值都相同)。

我想要唯一的对象列表而不实现Set。

请不要用Primitive数据类型解释逻辑,我想要Object类型的唯一性。

3 个答案:

答案 0 :(得分:1)

简单:您创建一个“集合”类,调用使用“传入”对象的equals()方法将它们与已存储的对象进行比较。

如果该方法提供了所有false - 没有重复,则添加到集合中。如果true - 不是唯一的。没有添加。

换句话说 - 你重新发明轮子并创建类似Java集的东西。当然,还有所有隐含的缺点 - 例如重复15到20年前在Java集实现中修复的实现错误。

答案 1 :(得分:1)

如果您不想使用Set,请使用List。实现唯一性检查逻辑所需要知道的只是equals(Object other)方法的作用:

  

指示某个其他对象是否“等于”此对象

现在,您可以针对列表中当前的所有对象测试传入对象,如果找不到匹配项,则添加它。

显然,这种维护唯一对象集合的方法的性能远远低于基于散列和基于排序的集合。

答案 2 :(得分:0)

If you cannot use a Set for holding unique instances of your Employee class, you can use a List. This requires you to do two things: