如果在Java中给定一个X的唯一属性,如何从哈希表中删除类型X的对象?

时间:2014-10-09 03:52:50

标签: java hashtable

假设我有一个班主任

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)删除

1 个答案:

答案 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进行搜索/删除