天天看點

《集合詳解之map》

Map接口集合類,具備的特點,儲存的資料結構都是以鍵值對的形式存在的,鍵不可重複,值可以重複。

添加

put() 如果之前沒有存在該鍵,那麼就傳回的是null,如果之前就已經存在該鍵了,那麼就傳回該鍵之前對應的值

Putall() 把一個集合添加到另外一個集合中去

删除

Remove() 根據鍵删除一條map中資料,傳回的是該鍵對應的值

Clear() 清空集合中的所有元素

擷取

Get() 根據指定的鍵擷取對應的值

Size() 擷取map集合中的鍵值對的個數

判斷

Containskey() 判斷map集合是否包含指定的鍵

Containvalue() 判斷map集合中是否包含指定的值

Isempty() 判斷map集中是否為空

Hashmap:底層也是基于哈希表實作的

Hashmap存儲原理:

往hashmap添加元素的的時候,首先會調用鍵的hashcode方法得到元素的哈希碼值,然後經過運算可以算出該元素在哈希表中存儲位置。分兩種情況。

情況1.

如果算出的位置目前沒有任何元素,那麼該元素可以直接添加到哈希表中。

情況2.

如果算出的位置目前已經存在其他的元素,那麼還會調用該元素的equals方法與這個位置上的元素進行比較,如果equals方法傳回的是false,那麼該元素允許被儲存,如果equsls傳回是true,那麼該元素被視為重複元素,不允許儲存。

Treemap:treemap也是基于紅黑樹(二叉樹)資料結構實作的,特點就是會對元素的鍵進行排序存儲。

Treemap要注意的事項:

1. 往treemap添加元素的時候,如果元素的鍵具備自然順序,那麼就會按照鍵的自然順序特性進行排序儲存。

2. 往treemap添加元素的時候,如果元素鍵不具備自然順序,那麼元素的鍵類必須要實作comparable接口,把鍵的比較規則定義在compareto方法上。

3. 往treemap添加元素的時候,如果元素的鍵不具備自然順序特性,而且鍵所屬的類也沒有實作comparble接口,那麼就必須在建立treemap對象的時候傳入比較器。

Hashtable:底層也是依賴哈希表實作的,也就是實作方式與hashmap是一緻的,但是hashtable是線程安全的,操作效率低。

Jdk1.0出現的,hashmap是jdk1.2出現的