麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

IdentityHashMap :key值可以重復的Map集合

2019-11-11 04:49:46
字體:
來源:轉載
供稿:網友

問題引入

初學java的時候,Map集合給人留下的印象就是鍵值對{key=value}的存儲方式。并且我們知道鍵值對的key唯一。但是Map容器真的不能存儲key值相同的數據嗎?查詢API才發現有這么一個實現類可以存儲重復的key:IdentityHashMap。

IdentityHashMap簡介

IdentityHashMap類同樣實現了Map接口,擁有Map集合的一切特性。key值同樣需要判斷是不是重復,根本就是判斷的方法和其他Map的實現類不一樣。

我們來看看官方的定義: java.util.IdentityHashMap類利用哈希表實現 Map 接口,比較鍵(和值)時使用引用相等性代替對象相等性。 換句話說,在 IdentityHashMap 中,當且僅當 (k1==k2) 時,才認為兩個鍵 k1 和 k2 相等(在正常 Map 實現(如 HashMap)中,當且僅當滿足下列條件時才認為兩個鍵 k1 和 k2 相等:(k1==null ? k2==null : e1.equals(e2)))。

也就是說,IdentityHashMap比較的單單key的值,它不管可以的內存地址還是基本數據類型。而正常的Map實現比較的是具體的內容。

簡單的小Demo

public class IdentityHashMapDemo { public static void main(String[] args) { //測試key可以重復的map集合 HashMap<Object, String> map = new HashMap<>(); IdentityHashMap<Object, String> idenMap = new IdentityHashMap<>(); idenMap.put("測試", "成功"); idenMap.put("測試", "失敗"); map.put("測試", "成功"); map.put("測試", "失敗"); System.out.結果分析

可以看出: 如果存放的是非對象,IdentityHashMap和其他Map的實現沒有區別。區別在與可一直存放的對象。使用兩次new String() 創建的對象的內存地址必然不會相同,但是指向的內容是相同的。所以HashMap會認為是同一個key從而覆蓋前一個key對應的值。但是IdentityHashMap只會去比較key實際的值,也就是內存地址而不會管他具體的內容。所以認為不是同一個key。

Q&AString str = new String("abc")//這句代碼到底創建了幾個對象?String str = "abc" //該代碼和上述代碼有什么區別?/* 第一段代碼實際創建了兩個對象。第二段代碼創建了一個對象。("abc")就相當于第二段代碼。 這時已經創建了一次對象。再遇到new關鍵字時,創建第二個對象這個對象保存的是"abc"的內存地址, 并沒有真正的指向字符串"abc"。 String str = "abc"是字符串比較特別的創建對象的方式。創建之后會作為常量保存在方法區的常量池中。 它創建對象的時候,會先在常量池中查詢有沒有已經的存在的字符串常量,如果有就會把其對應的地址給它,如果沒有才會創建。*/
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩视 | 蜜桃一本色道久久综合亚洲精品冫 | 免费国产人成网站 | 精品一区二区三区在线播放 | 久久久久久久久亚洲精品 | 久草视频在线资源 | 精品一二三区视频 | 欧美日韩在线视频一区 | 一区二区三区在线观看av | 欧美中文字幕一区二区 | 精品一区二区三区毛片 | 韩国三级日本三级香港三级黄 | 久久久成人免费视频 | 成年性羞羞视频免费观看无限 | 特级毛片a级毛片100免费 | 无码专区aaaaaa免费视频 | 99精品欧美一区二区 | 综合日韩欧美 | 黄色小视频免费在线观看 | 毛片免费看电影 | 福利免费视频 | 日本中文字幕久久 | 亚洲欧美成aⅴ人在线观看 免费看欧美黑人毛片 | 日本欧美一区二区三区视频麻豆 | 国产在线一区二区三区 | 一级免费在线视频 | 一级免费毛片 | 国产老师做www爽爽爽视频 | a黄毛片 | 羞羞的动漫在线观看 | 免费观看一级黄色片 | 日韩专区在线 | 在线天堂中文在线资源网 | 亚洲午夜影院在线观看 | 叶子楣成人爽a毛片免费啪啪 | 国产成人av免费看 | 免费日韩片 | 国产成人在线网址 | 久久不雅视频 | 久久精品免费国产 | 在线视频观看一区二区 |