[英]How does HashMap in Java use equals() and hashCode() to find objects?
[英]How does hashCode work with a HashMap in Java
我目前有這段代碼:
Map<Site, LinkedList<Site.Hosts.Host>> map = new HashMap<Site, LinkedList<Site.Hosts.Host>>();
for (PerformanceCounter element : pc) {
Site s = new Site();
s.id = Short.parseShort(element.getSite_id());
s.name = element.getSite_name();
s.location = element.getSite_location();
Site.Hosts.Host h = new Site.Hosts.Host();
h.id = Short.parseShort(element.getHost_id());
if (!map.containsKey(s)) {
map.put(s, new LinkedList<Site.Hosts.Host>());
} else {
map.get(s).add(h);
}
}
我正在閱讀的PerformanceCounters的列表是:
1, C-01, New York, 1001
1, C-01, New York, 1002
1, C-01, New York, 1003
其中id是101,C-01是名稱,紐約是位置。
不幸的是,我的代碼為我的地圖創建了3個鍵值。
我無法在LinkedList
生成具有3個值的1個鍵。
我的if( !map.containsKey(s) )
部分無法正常工作,我不確定如何解決此問題。
您是Site.java
類的作者Site.java
? 如果是,請確保您正確地實現了hashCode()
和equals()
方法。
正常工作的基本合同是:
equals()
方法相等,則它們必須具有相同的hashCode()
。 hashCode()
,則並不意味着它們將相等。 evaluating hasCode()
方法時使用了任何對象屬性,則也必須在equals()
實現中使用它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.