Nei*_*ilA 5 java overriding equals hashmap hashcode
是否有一个HashMap类(或Map接口)的实现,它允许我使用备用哈希码和等于操作...类似于如何使用Collections.sort中的Comparator以多种方式对相同类型的集合进行排序(列表,比较器).
我想尽可能避免,创建一个提供所需哈希码和等于操作的密钥包装器.
就我而言,我需要这样的场景之一:
在我的Web应用程序中,对于每个请求,我加载位置/ ISP和其他数据.在代码的不同部分(在我的服务和存储库层中),我已经"最小化"特定于其需求的缓存.
这是一个简化的代码示例:
class GeoIpData{
private String countryName;
private String state;
private String city;
private String isp;
@Override
public int hashCode() {
//countryName hashCode
//state hashCode
//city hashCode
//isp hashCode
}
@Override
public boolean equals(Object obj) {
// compare countryName
// compare state
// compare city
// compare isp
}
}
Map<GeoIpData,#Type1> fullCache = ... //This cache needs to be unique per countryName,state,city and isp
Map<GeoIpData,#Type2> countryCache = ... //This cache needs to be unique per countryName
Map<GeoIpData,#Type2> ispCache = ... //This cache needs to be unique per countryName,isp
Run Code Online (Sandbox Code Playgroud)
为实现此目的,上述3个映射需要3个不同的hashcode和equals方法.
fullCache:
hashCode -> GeoIpData.hashCode();
equals -> GeoIpData.equals(Object obj);
countryCache:
hashCode -> {countryName hashCode }
equals -> {compare countryName }
ispCache:
hashCode -> {countryName hashCode & isp hashCode }
equals -> {compare countryName & compare isp hashCode }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1540 次 |
| 最近记录: |