假设我有一个班主任
public class Person {
int personID = 123;
String fname = John;
String lname = Doe;
}
我创建了一个哈希表。 (使用人作为关键和价值)。 现在,假设每个人都有一个唯一的ID,并假设哈希表中有人,我希望,给定一个唯一的ID(int),从该哈希表中删除与该ID相对应的人。
问题出现在为hashtable.remove()函数提供什么参数,因为它采用Person类型的对象而不是int。
注意:假设键和值都是类型的事实Person是设计要求且无法更改
编辑:我已经覆盖了person类的hashcode()和equals()方法,它们现在都依赖于personID。但是我仍然不知道传递hashtable.remove()方法的内容,因为它接受类型Person并且我想基于用户给定的int(这是personID)删除
答案 0 :(得分:0)
如果你已经基于personID重写了你的equals()和hashCode()方法,那么你应该只使用你正在搜索的personID创建一个Person对象,并相应地搜索/删除该人。
假设您要搜索123 personID。
你可以Person p = new Person();
p.personID = 123;
p.fName = "XYZ";
p.lName = "ABC";
myHashtable.remove(p);
因为equals()和hashCode()基于personID。因此,表格将根据personID进行搜索/删除