對映Map的底層方法實現

2021-09-27 19:23:24 字數 3132 閱讀 3459

字典

public

inte***ce

map

private

class

node

public

node

(k key)

public

node()

public string tostring()

private node dummyhead;

private

int size;

public

linkedlistmap()

public

intgetsize()

public

boolean

isempty()

private node getnode

(k key)

return null;

}public

boolean

contains

(k key)

public v get

(k key)

public

void

add(k key,v value)

else

//若已經有這個鍵值對了

node.value=value;

}public

void

set(k key,v newvalue)

public v remove

(k key)

if(prev.next!=null)

return null;

//如果沒發現要刪的

}

public

class

bstmap

comparable

,v>

implements

map }

private node root;

private

int size;

public

bstmap()

public

intgetsize()

public

boolean

isempty()

public

void

add(k key,v value)

private node add

(node node,k key,v value)

if(key.

compareto

(node.key)

<0)

node.left=

add(node.left,key,value)

;//左節點為遞迴值

else

if(key.

compareto

(node.key)

>0)

node.right=

add(node.right,key,value)

;else

node.value=value;

return node;

//返回根節點

}//返回以node為根節點的二分搜尋樹中,key所在的節點

private node getnode

(node node,k key)

public

boolean

contains

(k key)

public v get

(k key)

public

void

set(k key,v newvalue)

//返回以node為根的二分搜尋樹最小鍵值所在節點

private node minimum

(node node)

//從二分搜尋樹中刪除最小值所在節點,返回最小值

public e removemin()

//刪除以node為根的二分搜尋樹最小節點

//返回刪除節點後新的二分搜尋樹的根

private node removemin

(node node)

node.left=

removemin

(node.left)

;return node;

}//從二分搜尋樹中刪除元素為e的節點

public v remove

(k key)

return null;

}//刪除以node為根的二分搜尋樹中鍵為key的節點,遞迴演算法

//返回刪除節點後新的二分搜尋樹的根

private node remove

(node node, k key)

else

if(key.

compareto

(node.key)

>0)

else

//待刪除節點左子樹為空的情況

if(node.right==null)

//待刪除節點左右子樹均不為空的情況

//找到比這個待刪除節點大的最小節點,即待刪除節點右字數的的最小節點

//用這個節點頂替待刪除節點位置

node successor =

minimum

(node.right)

; successor.right=

removemin

(node.right)

;//新的代替的節點右子樹為刪除最小值的樹

successor.left =node.left;

node.left=node.right=null;

return successor;

}// 測試:每個詞的詞頻

public

static

void

main

(string[

] args)

system.out.

println

("totel different words:"

+map.

getsize()

);system.out.

println

("frequency of pride"

+map.

get(

"pride");

)}}

深入理解java對映map的底層操

對映 層次結構 1 map 介面 其 子介面和其實現類如下 一 enummap 抽象類 implementsmap 二 sortedmap 介面 exntends map treemap extends sortedmap treemap加入如和刪除元素是根據key來進行的,其原理和treeset完...

解剖Go語言map底層實現

map是go語言中基礎的資料結構,在日常的使用中經常被用到。但是它底層是如何實現的呢?golang中map的底層實現是乙個雜湊表,因此實現map的過程實際上就是實現散表的過程。在這個雜湊表中,主要出現的結構體有兩個,乙個叫hmap a header for a go map 乙個叫bucket。這兩...

Map的底層結構

map是以鍵值對來儲存物件的,它的底層實際上是陣列和鍊錶來組成的 當使用put方法時,先查詢出陣列位置是否存在物件,通過key.hashcode對陣列長度取餘 存在,則把裡面的鍊錶拿出來,判斷鍊錶裡面是否存在key值與傳遞過來的key值一樣的物件,存在,則把傳遞過來的value取代鍊錶key對應的v...