我有一个HashSet我可以添加一些Point,但删除对我不起作用。 我也尝试过制作一个功能。 我该如何解决这个问题?
HashSet<Point> array= new HashSet<Point>();
// add some elements:
array.add(new Point (pos[0],pos[1]));
// remove a element (is not working...)
array.remove(new Point (pos[0],pos[1]));
// tried also to make a function:
private void removePoint(HashSet<Point> array, final int[] pos) {
Point pTmp;
Point rPos = new Point (pos[0],pos[1]);
final Iterator<Point> it = array.iterator();
while (it.hasNext()) {
pTmp = it.next();
if (pTmp.equals(rPos)){
it.remove();
break;
}
}
return;
}
答案 0 :(得分:1)
通常情况下,当我看到某些内容未从某个Set中移除时,因为hashCode或equals尚未正确实现。现在很明显,如果您使用Java Point,我怀疑情况不会如此。如果您正在使用自己的“Point&#39; class,那么你需要确保覆盖hashCode和equals。