雜湊表 Hash 的應用

2021-09-08 17:25:38 字數 2387 閱讀 4444

$hs=@() #定義陣列

$hs=@{} #定義hash表,使用雜湊表的鍵可以直接訪問對應的值,如 $hs["王五"] 或者 $hs.王五 的值為 75

$hs=@''@ #定義文字字串

1

$hs = @'2張三

3男412歲

5 '@

hash表的新建、修改、刪除:

1

#新建hash表

2$rs=@

3$rs45

$rs = @{}

6$rs.name="

lily"7

$rs.score=90

8$rs910

#新增鍵值

11$rs.age=20

12$rs

1314

#刪除鍵值

15$rs.remove("

age")16

$rs

hash表巢狀:

1

$infors = @{}

2$infors.pc1=@45

$infors.pc2=@

7$infors

.pc2.cpu89

#取pc1的值

10$infors

.pc1

11$infors["

pc1"]

取hash表中的值:

遍歷hash表:

hash表中的內容不能直接被當做物件來使用,需要進行轉換

1

#定義hash表

2$hash=@

3$hash.add("

dd","

fffff

")

遍歷hash表:

1

#方法一:

2foreach($obj

in$hash

.keys)37

8#方法二:

9foreach($obj

in$hash)10

12}1314

#方法三(複製到陣列):

15$array=new-object system.object -argumentlist $hash

.count

16$hash.copyto($array,0)

17$array

舉例:使用hash表取出分數相同的學生檔案cc.txt內容如下:

李一 93

王二 83

王三 93

李四 60

王五 75

馬六 61

孫七 75

劉八 75

將檔案cc.txt中的內容儲存到hash表中:

1

$hs=@{}

2 get-content d:\cc.txt | foreach-object

6$hs

結果如下:

通過 group-object 對成績分組:

判斷hash表中是否存在某個值:

格式化輸出:

1

#改變列標題為name,所有processname輸出為大寫格式,下面兩種寫法輸出結果相同:

將processname列標題名稱改為name

get-process|select id,@

參考: #建立hash表

#將hash表轉換為物件

#遍歷hash表

雜湊(hash 雜湊表)

可以認為雜湊有著陣列的思想,它將所有的資料段拼成乙個陣列 順序表 進行儲存,通過雜湊函式,可以基本上以o 1 的時間複雜度來查詢和儲存資料。通過資料段中的唯一關鍵字 key 經過某種演算法,得出此資料段在整個雜湊陣列 順序表 中的的下標,然後直接取元素即可。有資料結構如下 資料段 key,value...

Hash表(雜湊表 雜湊表)

雜湊函式 乙個把查詢表中的關鍵字對映成該關鍵字對應的位址的函式,記為hash key addr。位址可以是陣列下標,索引,或記憶體位址等 衝突 雜湊函式可能會把兩個和兩個以上的不同關鍵字對映到同一位址。衝突不可避免,所以要設計好的處理衝突的方法。同義詞 發生碰撞的不同關鍵字為同義詞。雜湊表 根據關鍵...

Hash和雜湊 雜湊 表

hash又稱為雜湊,是把任意長度的輸入 又叫做預對映pre image 通過雜湊演算法變成固定長度的輸出,該輸出就是雜湊值。hash演算法還有乙個特點,就是很難找到逆向規律。在同一函式下,如果兩個雜湊值是不相同的,那麼這兩個雜湊值的原始輸入也是不同的。hash演算法又被稱為雜湊演算法。雖然被稱為演算...