addAll to Set不会在java中添加值

时间:2012-11-05 10:26:31

标签: java collections set add

我在Object(Obj1)

中有一个属性
Set<AssignedService> serviceList;
public Set<AssignedService> getServiceList();

我在某些情况下执行以下操作

Obj1.getServiceList().clear();
Obj1.getServiceList().addAll(services);

服务也设置

但我认为最终结果是服务集有4个对象/数据元素 但是Obj1.getServiceList()在addAll

之后返回一个空集

这里有什么问题。它是AssignedService对象的问题,因为它没有实现IComparable

2 个答案:

答案 0 :(得分:2)

您应该先在.equals()

上阅读此excellent piece

然后,正如其他人所指出的那样,检查equals()课程中.hashcode() AssignedService的实施情况。最有可能的根本原因在这里。

您还可以检查.addAll(...)来电的返回值 - false表示方法调用未修改基础Set

干杯,

答案 1 :(得分:0)

检查AssignedService中的equals()的实现。

Set:不包含重复元素的集合。更正式地说,集合不包含元素对e1和e2,使得e1.equals(e2)和至多一个null元素。正如其名称所暗示的,该界面对数学集抽象进行建模。