繁体   English   中英

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

[英]How can I remove an object of type X from a hashtable given one unique attribute of X in Java?

假设我有一个上课的人

public class Person {

int personID = 123;
String fname = John;
String lname = Doe;

}

并且我创建了一个哈希表。 (将人同时用作键和值)。 现在,假设每个人都有一个唯一的ID,并假设哈希表充满了人,我想给定一个唯一的ID(int),从与该ID对应的哈希表中删除该人。

问题在于用什么参数赋予hashtable.remove()函数,因为它采用了Person类型而不是int类型的对象。

注意:假设键和值均为Person类型,这是设计要求,不能更改

编辑:我已经覆盖了人员类的hashcode()和equals()方法,它们现在都依赖于personID。 但是我仍然不知道要传递什么hashtable.remove()方法,因为它采用的是Person类型,并且我想根据用户提供的int(即personID)删除它

如果您已基于personID覆盖了equals()和hashCode()方法,则只需使用要搜索的personID创建一个Person对象,并相应地搜索/删除此person。

假设您要搜索123 personID。

您可以Person p = new Person(); p.personID = 123; p.fName = "XYZ"; p.lName = "ABC"; myHashtable.remove(p); Person p = new Person(); p.personID = 123; p.fName = "XYZ"; p.lName = "ABC"; myHashtable.remove(p); 由于equals()和hashCode()基于personID。 因此表格将根据personID进行搜索/删除

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM