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

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

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

2019-11-11 06:20:02
字體:
來源:轉載
供稿:網友

問題引入

初學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"是字符串比較特別的創建對象的方式。創建之后會作為常量保存在方法區的常量池中。 它創建對象的時候,會先在常量池中查詢有沒有已經的存在的字符串常量,如果有就會把其對應的地址給它,如果沒有才會創建。*/
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产免费资源 | 九色成人在线 | 国产日韩在线观看一区 | 亚洲一区动漫 | 中文字幕在线观看国产 | 日本高清视频网站www | 国产免费成人在线 | 在线成人精品视频 | 亚洲成人精品一区二区 | 欧美精品一区二区三区在线 | 欧美激情在线播放 | av在线免费观看网 | 欧美成人福利 | 中文字幕激情视频 | 午夜视频成人 | 91成人在线免费视频 | 牛牛a级毛片在线播放 | 毛片免费视频观看 | 日本羞羞的午夜电视剧 | 国产人成免费爽爽爽视频 | 国产精品久久久久久婷婷天堂 | 91短视频版高清在线观看免费 | 日韩字幕在线观看 | 欧美黄色一级生活片 | 欧美日韩在线免费观看 | 国产91小视频在线观看 | 国产亚洲小视频 | 91精选视频 | 黄色电影免费提供 | 91午夜在线观看 | 精品国产一区二区三区四 | 一级免费大片 | 成人三区四区 | 又黄又爽免费无遮挡在线观看 | 特级a欧美做爰片毛片 | 免费激情网址 | 亚洲aⅴ在线观看 | 欧产日产国产精品乱噜噜 | 久久av免费 | 久久久久av69精品 | 天天碰天天操 |