gpt4 book ai didi

java - 在 Java 中删除 HashSet 中的用户定义对象

转载 作者:行者123 更新时间:2023-12-01 14:25:59 25 4
gpt4 key购买 nike

我创建了一个名为 Idea 的简单类,其中包含 ColumnPositions 的 HashSet(我创建的另一个类仅包含 x 和 y 字段)。 ColumnPosition 中的 equals 和 hashcode 方法如下所示:

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + x;
result = prime * result + y;
System.out.println("hashCode: " + result);
return result;
}

@Override
public boolean equals(Object obj) {
if (obj instanceof ColumnPosition) {
ColumnPosition cp = (ColumnPosition) obj;
if (cp.x != this.x || cp.y != this.y) {
return false;
}
}
return true;
}

但是,当我去测试 Idea 类并尝试删除 Idea 对象的 HashSet 中的 ColumnPosition 对象时。这不起作用。怎么了??谢谢!

public void test_HashSetRemoveColumnPosition() {
ColumnPosition column_03 = new ColumnPosition(0, 3);

Set<ColumnPosition> columns = new HashSet<ColumnPosition>();
columns.add(column_03);

this.idea.getColumnPositions().add(column_03);
assertEquals(1, columns.size());

assertTrue(this.idea.getColumnPositions().remove(column_03)); // this is passing
assertEquals(0, columns.size()); // this is failing because columns.size() still equals 1. WHAT?! How is this possible if the remove method returned true?
}

最佳答案

确保 this.idea.getColumnPositions()columns 是同一对象。

关于java - 在 Java 中删除 HashSet 中的用户定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17176919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com