久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

為什么我的 HashMap 允許重復鍵?

Why is my HashMap allowing duplicate keys?(為什么我的 HashMap 允許重復鍵?)
本文介紹了為什么我的 HashMap 允許重復鍵?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

嘿,我正在使用 HashMap 來跟蹤公告板上的服務和服務請求.但是,我必須有哈希碼和等于錯誤,因為我得到了重復的鍵.誰能告訴這可能是為什么?

Hey I'm using a HashMap to keep track of services and service-requests on a BulletinBoard. However, I must have the hashcode and equals wrong because I'm getting duplicate keys. Can anyone tell why this might be?

keySet的內容:

Services: [1, 1, 6, 6, 3]
Requests: [8, 7, 6, 5, 8, 4, 5, 6, 2]

以下是相關代碼:

private static final HashMap<Advert, Integer> services = new HashMap<>();
...

public class Advert {

private int id;
private BoardPoster poster;

public Advert(BoardPoster poster) {
    this.poster = poster;
}

public BoardPoster getPoster() {
    return poster;
}

public void spawn() {
    id = RANDOM.nextInt(ADVERT_RANGE);
}

public int getID() {
    return id;
}

@Override
public String toString() {
    return Integer.toString(id);
}

@Override
public boolean equals(Object o) {
    if (o != null && o instanceof Advert) {
        return ((Advert) o).id == id;
    }
    return false;
}

@Override
public int hashCode() {
    return 67 * 5 + this.id;
}
}

推薦答案

最可能的原因是您用作鍵的對象是可變的.因此,如果您執行以下操作:

The likeliest reason is that the objects you use as keys are mutable. So if you do something like:

map.put(anAdvert, 1);
anAdvert.spawn(); //modifies id, which affects hashcode and equals

地圖的行為會出乎意料.

The behaviour of the map will be unexpected.

cf 地圖的javadoc

注意:如果將可變對象用作映射鍵,則必須非常小心.如果對象的值以影響等于比較的方式更改,而對象是映射中的鍵,則不會指定映射的行為.

Note: great care must be exercised if mutable objects are used as map keys. The behavior of a map is not specified if the value of an object is changed in a manner that affects equals comparisons while the object is a key in the map.

這篇關于為什么我的 HashMap 允許重復鍵?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Convert List of Strings into Map using Java-8 Streams API(使用 Java-8 Streams API 將字符串列表轉換為 Map)
Getting data from JSON(從 JSON 獲取數據)
java linkedhashmap iteration(javalinkedhashmap迭代)
Converting a list of objects to Map(將對象列表轉換為 Map)
Create a HashMap with a fixed Key corresponding to a HashSet. point of departure(用一個固定的Key對應一個HashSet創建一個HashMap.出發點)
HttpMessageConverter exception : RestClientException: Could not write request: no suitable HttpMessageConverter found(HttpMessageConverter 異常:RestClientException:無法寫入請求:找不到合適的 HttpMessageConverter) - IT屋-程序員
主站蜘蛛池模板: 日本a网站 | 日本电影一区二区 | 九九九久久国产免费 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 成人国产精品久久久 | 国产一区二区三区在线视频 | 一区二区三区精品视频 | 激情欧美日韩一区二区 | 久久成人一区 | 特一级毛片 | 妹子干综合 | 欧美日韩国产一区 | 久久爆操| 日韩色综合| 精品国产乱码久久久久久蜜柚 | 国产在线视频在线观看 | 国产亚洲一区二区精品 | 精品在线一区二区 | 国产东北一级毛片 | av片在线免费看 | 久久久久久九九九九 | 亚洲一区二区av | 亚洲 欧美 在线 一区 | 精品一区二区三区日本 | 日韩国产在线观看 | 欧美美女一区二区 | 中文字幕日韩欧美一区二区三区 | 自拍偷拍中文字幕 | 亚洲第一av | 999观看免费高清www | 亚洲视频免费观看 | 日韩www | 日韩欧美国产一区二区 | 激情亚洲 | 一区二区三区欧美大片 | 亚洲国产成人av好男人在线观看 | 91亚洲一区 | 91精品国产日韩91久久久久久 | 亚洲午夜av久久乱码 | 日本一区二区三区免费观看 | 亚洲va在线va天堂va狼色在线 |