java – 如何将第三方类对象用作Hashmap键?
发布时间:2020-05-24 16:36:33 所属栏目:Java 来源:互联网
导读:好的,我理解equals和hashcode的工作原理以及它们在hashmap中的使用方式. 但是这个问题在我脑海中浮现,如果我有一个没有覆盖哈希码和等号的第三方对象,我甚至不允许修改它. 考虑以下课程: //Unmodifiable classpublic final class WannaBeKey{ private String
|
好的,我理解equals和hashcode的工作原理以及它们在hashmap中的使用方式.
考虑以下课程: //Unmodifiable class
public final class WannaBeKey{
private String id;
private String keyName;
//Can be many more fields
public String getId()
{
return id;
}
public String getKeyName()
{
return id;
}
//no hashcode or equals :(
}
现在我想把这个类作为我的Hashmap键,显然它不会没有equals和hashcode.我想知道有没有办法处理这种情况?我无法想到任何我想到的事情. 谢谢. 解决方法我之前遇到过这种情况,并通过为WannaBeKey创建一个包装器来解决这个问题:public class WannaBeKeyWrapper {
private final WannaBeKey key;
public WannaBeKeyWrapper(WannaBeKey key) {
this.key = key;
}
public boolean equals(Object obj) {
// Insert equality based on WannaBeKey
}
public int hashCode() {
// Insert custom hashcode in accordance with http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#hashCode()
}
}
显然这会改变你的Set来自Set< WannaBeKey>设置< WannaBeKeyWrapper>,但你应该能够解释它. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读
