集合類淺談(2)
阿新 • • 發佈:2018-11-11
雙列集合:
-------------| Map 如果是實現了Map介面的集合類,具備的特點: 儲存的資料都是以鍵值對的形式存在的,鍵不可重複,值可以重複。
----------------| HashMap 底層也是基於雜湊表實現 的。
HashMap的儲存原理:
往HashMap新增元素的時候,首先會呼叫鍵的hashCode方法得到元素 的雜湊碼值,然後經過運算就可以算出該
元素在雜湊表中的儲存位置。
情況1: 如果算出的位置目前沒有任何元素儲存,那麼該元素可以直接新增到雜湊表中。
情況2:如果算出 的位置目前已經存在其他的元素,那麼還會呼叫該元素的equals方法與這個位置上的元素進行比較
,如果equals方法返回 的是false,那麼該元素允許被儲存,如果equals方法返回的是true,那麼該元素被視為
重複元素,不允儲存。
----------------| TreeMap TreeMap也是基於紅黑樹(二叉樹)資料結構實現 的, 特點:會對元素的鍵進行排序儲存。
TreeMap 要注意的事項:
1. 往TreeMap新增元素的時候,如果元素的鍵具備自然順序,那麼就會按照鍵的自然順序特性進行排序儲存。
2. 往TreeMap新增元素的時候,如果元素的鍵不具備自然順序特性, 那麼鍵所屬的類必須要實現Comparable介面,把鍵
的比較規則定義在CompareTo方法上。
3. 往TreeMap新增元素的時候,如果元素的鍵不具備自然順序特性,而且鍵所屬的類也沒有實現Comparable介面,那麼就必須
-------------| Map 如果是實現了Map介面的集合類,具備的特點: 儲存的資料都是以鍵值對的形式存在的,鍵不可重複,值可以重複。
----------------| HashMap 底層也是基於雜湊表實現 的。
HashMap的儲存原理:
往HashMap新增元素的時候,首先會呼叫鍵的hashCode方法得到元素 的雜湊碼值,然後經過運算就可以算出該
元素在雜湊表中的儲存位置。
情況1: 如果算出的位置目前沒有任何元素儲存,那麼該元素可以直接新增到雜湊表中。
情況2:如果算出 的位置目前已經存在其他的元素,那麼還會呼叫該元素的equals方法與這個位置上的元素進行比較
,如果equals方法返回 的是false,那麼該元素允許被儲存,如果equals方法返回的是true,那麼該元素被視為
重複元素,不允儲存。
----------------| TreeMap TreeMap也是基於紅黑樹(二叉樹)資料結構實現 的, 特點:會對元素的鍵進行排序儲存。
TreeMap 要注意的事項:
1. 往TreeMap新增元素的時候,如果元素的鍵具備自然順序,那麼就會按照鍵的自然順序特性進行排序儲存。
2. 往TreeMap新增元素的時候,如果元素的鍵不具備自然順序特性, 那麼鍵所屬的類必須要實現Comparable介面,把鍵
的比較規則定義在CompareTo方法上。
3. 往TreeMap新增元素的時候,如果元素的鍵不具備自然順序特性,而且鍵所屬的類也沒有實現Comparable介面,那麼就必須
在建立TreeMap物件的時候傳入比較器。