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

為什么我的 HashMap 允許重復(fù)鍵?

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

問題描述

嘿,我正在使用 HashMap 來跟蹤公告板上的服務(wù)和服務(wù)請求.但是,我必須有哈希碼和等于錯誤,因?yàn)槲业玫搅酥貜?fù)的鍵.誰能告訴這可能是為什么?

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的內(nèi)容:

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

以下是相關(guān)代碼:

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;
}
}

推薦答案

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

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.

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

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

相關(guān)文檔推薦

Convert List of Strings into Map using Java-8 Streams API(使用 Java-8 Streams API 將字符串列表轉(zhuǎn)換為 Map)
Getting data from JSON(從 JSON 獲取數(shù)據(jù))
java linkedhashmap iteration(javalinkedhashmap迭代)
Converting a list of objects to Map(將對象列表轉(zhuǎn)換為 Map)
Create a HashMap with a fixed Key corresponding to a HashSet. point of departure(用一個固定的Key對應(yīng)一個HashSet創(chuàng)建一個HashMap.出發(fā)點(diǎn))
HttpMessageConverter exception : RestClientException: Could not write request: no suitable HttpMessageConverter found(HttpMessageConverter 異常:RestClientException:無法寫入請求:找不到合適的 HttpMessageConverter) - IT屋-程序員
主站蜘蛛池模板: 婷婷精品 | 91精品久久久久久久久中文字幕 | 一区二区精品在线 | 成人做爰9片免费看网站 | 精品日韩在线 | 日本福利视频 | 亚洲www| 亚洲国产精品va在线看黑人 | 欧美日韩在线免费观看 | 日韩一区三区 | 亚洲激情在线视频 | 久久久久国产一区二区三区四区 | 久久精品在线免费视频 | 狠狠撸在线视频 | 精品一区在线看 | 国产日韩电影 | 97av在线| 成年人黄色小视频 | 日本在线免费视频 | 老头搡老女人毛片视频在线看 | 亚洲一区av | 久久99精品久久久水蜜桃 | 国产精品久久久久久久久久久久 | 日本天天操 | 日韩精品在线一区二区 | 国产精品99久久久久久人 | 国产成人精品av | 欧美黄色一区 | 亚洲高清视频在线观看 | 免费一级片 | 精品免费国产一区二区三区 | 欧美一区二区综合 | 欧美日韩成人在线观看 | 午夜黄色影院 | 综合欧美亚洲 | 韩日精品视频 | 成人免费视频观看视频 | 成人欧美一区二区三区色青冈 | 黄色一级毛片免费看 | 国产精品a级| 国产精品视频在线播放 |