集合區(qū)別

20160124221843905.png
Paste_Image.png
QQ截圖20161102140318.png

hashmap 允許存在一個(gè)null值,重復(fù)元素覆蓋
當(dāng)插入空值時(shí)直接去遍歷table[0]Entry鏈表,尋找e.key==null的Entry或者沒有找到遍歷結(jié)束如果找到了e.key==null,就保存null值對(duì)應(yīng)的原值oldValue,然后覆蓋原值,并返回oldValue ,如果在table[0]Entry鏈表中沒有找到就調(diào)用addEntry方法添加一個(gè)key為null的Entry。


HashSet 允許一個(gè)null,重復(fù)元素不會(huì)被插入
實(shí)現(xiàn)了Set接口,它不允許集合中有重復(fù)的值,當(dāng)我們提到HashSet時(shí),第一件事情就是在將對(duì)象存儲(chǔ)在HashSet之前,要先確保對(duì)象重寫equals()和hashCode()方法,這樣才能比較對(duì)象的值是否相等,以確保set中沒有儲(chǔ)存相等的對(duì)象。如果我們沒有重寫這兩個(gè)方法,將會(huì)使用這個(gè)方法的默認(rèn)實(shí)現(xiàn)。


treemap 插入元素通過比較器比較,不要插null
中對(duì)于存儲(chǔ)進(jìn)TreeMap及TreeSet中的元素,要求元素自身具有比較性或者在創(chuàng)建集合時(shí)傳入一個(gè)比較器對(duì)象。當(dāng)調(diào)用TreeMap.put(key,value)時(shí),如果root為空,也就是集合中沒有元素時(shí),不管key值是否為null,TreeMap都創(chuàng)建一個(gè)節(jié)點(diǎn)并將該節(jié)點(diǎn)作為樹根節(jié)點(diǎn)存入集合中。當(dāng)?shù)诙未嫒雓ey為null的鍵值對(duì)時(shí),此時(shí)如果集合自身不帶比較器,那么調(diào)用元素自身的compareTo()方法,即key.compareTo()方法,此時(shí)必然產(chǎn)生NullPointerException異常。


treeset 同上
同 treemap 允許第一個(gè)元素為null,再插入要compareTo報(bào)錯(cuò)。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、基本數(shù)據(jù)類型 注釋 單行注釋:// 區(qū)域注釋:/* */ 文檔注釋:/** */ 數(shù)值 對(duì)于byte類型而言...
    龍貓小爺閱讀 4,476評(píng)論 0 16
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,842評(píng)論 18 399
  • java筆記第一天 == 和 equals ==比較的比較的是兩個(gè)變量的值是否相等,對(duì)于引用型變量表示的是兩個(gè)變量...
    jmychou閱讀 1,658評(píng)論 0 3
  • 集合類簡(jiǎn)介 為什么出現(xiàn)集合類?面向?qū)ο笳Z言對(duì)事物的體現(xiàn)都是以對(duì)象的形式,所以為了方便對(duì)多個(gè)對(duì)象的操作,就要對(duì)對(duì)象進(jìn)...
    阿敏其人閱讀 1,562評(píng)論 0 7
  • 姓名:李念鑫 學(xué)號(hào):17011210431 【嵌牛導(dǎo)讀】:前幾天華為在德國(guó)發(fā)布了華為年度旗艦,華為mate10是否...
    LNX_8386閱讀 229評(píng)論 0 0

友情鏈接更多精彩內(nèi)容