簡體   English   中英

hashCode如何與Java中的HashMap一起使用

[英]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()方法。

正常工作的基本合同是:

  1. 如果兩個對象按照equals()方法相等,則它們必須具有相同的hashCode()
  2. 但是,如果兩個對象返回相同的hashCode() ,則並不意味着它們將相等。
  3. 此外,如果在evaluating hasCode()方法時使用了任何對象屬性,則也必須在equals()實現中使用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM