EventObject target = new EventObject("e2");
Set<EventObject> Following = o.getFollowingEvents(e1);
System.out.println("Elements : "+Following.toString());
System.out.println(e2.toString());
System.out.println(Following.toString()+" contains "+e2+" ? = "+Following.contains(target));
打印:
Elements : [e2, e5, end, T]
e2
[e2, e5, end, T] contains e2 ? = false
等于和比较:
@Override
public int compareTo(EventObject o) {
return this.getName().compareTo(o.getName());
}
@Override
public boolean equals(Object obj) {
return (obj instanceof EventObject) && (this.compareTo((EventObject) obj) == 0);
}
如果事件出现在 Set 上,这怎么可能?
最佳答案
听起来你只是忘了实现 hashCode
:
@Override
public int hashCode() {
return getName().hashCode(); // Consistent with equals
}
请注意,您实际上不需要在 equals
中执行排序比较。方法 - 您只需要检查名称是否相等。
关于Java Set,包含,错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21834003/