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

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

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

2019-11-11 04:53:26
字體:
來源:轉載
供稿:網友

問題引入

初學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"是字符串比較特別的創建對象的方式。創建之后會作為常量保存在方法區的常量池中。 它創建對象的時候,會先在常量池中查詢有沒有已經的存在的字符串常量,如果有就會把其對應的地址給它,如果沒有才會創建。*/
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产亚洲欧美日韩在线观看不卡 | 欧美特级一级毛片 | 国毛片 | 99精品视频在线观看免费 | 精品一区二区免费 | 污黄视频在线播放 | 午夜小电影| 国产精品久久久久久久午夜片 | 一本一本久久a久久精品综合小说 | 亚欧美一区二区 | 91精品国产综合久久婷婷香蕉 | 精品久久久久久久久亚洲 | 国产91在线免费 | 久久成人精品视频 | 中文字幕涩涩久久乱小说 | 日本黄色免费片 | 久久吊| 一级性色 | 91成人影库| av电影在线观看网址 | 色婷婷久久一区二区 | 亚洲精品一区二区三区免 | 午夜视频在线免费播放 | 国产精品久久久久久婷婷天堂 | 成人不卡在线观看 | 成人国产高清 | 国产毛片毛片毛片 | 中国产一级毛片 | 日韩在线激情 | 国产精品欧美久久久久一区二区 | 噜噜在线视频 | 亚洲一区二区国产 | 91福利在线观看 | 欧洲精品久久久久69精品 | 欧美日韩高清在线观看 | 日韩中文字幕三区 | 懂色av懂色aⅴ精彩av | 久久久久久久久久美女 | 国产一级毛片国语版 | 国产午夜精品理论片a级探花 | 精品1|