![](/img/trans.png)
[英]Best efficient data structure to store URIs for a web Crawler in Java
[英]Java: Efficient data structure to store object with no 'logical' duplicates
假设我有一个名为City的类,它存储有关城市的一些数据:
public class City {
String [] states;
String name;
double lat, lng;
//Constructors, getters/setters, etc
}
我想保留一个没有重复的城市清单。 现在通常很容易(使用HashSet),但是我将比较两个技术上不同的对象(不同的内存地址),但具有相同的String和double值。 我希望我的HashSet将具有相同内部值的对象视为“等效”。
我似乎不知道该怎么做。 是否重写hashCode()方法? 还是我重写equals()方法?
可以进行以下工作吗?
public int hashCode() {
return (double) name.hashCode() + lat * 100 + lng;
}
在比较String
的实际值和equals
double
值时,您应该覆盖equals
和hashCode
,并将哈希值基于hashCode
方法中的哈希值。
在显示的实现中,哈希可能很弱-您可能想使用素数种子。
按照建议实施时, equals
和hashCode
将比较您的对象,并根据其成员的值将它们放在存储桶中,这通常是您想要的。
如果使用的是IDE(推荐),则可以让IDE为您起草这些方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.