奇怪的HashSet行为

时间:2011-10-23 22:22:46

标签: java

这是我实施的一部分

aFList = new HashSet<Fault>();
bFList = new HashSet<Fault>();
oFList = new HashSet<Fault>();

temp.addAll(aFList);
temp.addAll(bFList);
oFList.addAll(temp);

故障类如下

public class Fault {
    int nodeIndex;
    boolean val;
}

Display() {
    Object [] temp;
    temp = aFList2.toArray();
    for(int i=0;i<temp.length;i++)
        ((Fault) temp[i]).display();
}

结果:

14_true 
6_true 
17_false 
16_false 
16_false 
9_false 
14_true 

问题:为什么我会重复列表元素?这可能是因为oFList已经包含了那些元素,但我认为HashSet会处理重复。我错过了什么吗?

1 个答案:

答案 0 :(得分:4)

如果要将类放在HashMap或HashSet中,则必须实现equals()和hashCode()。