Ruby Hash方法彙總

2021-08-25 00:12:23 字數 3555 閱讀 7086

一。給hash新增預設值 :

h =    #=> 

h.default = 7

h[1] #=> 2

h[3] #=> 4

h[4] #=> 7

h[5] #=> 7

二。給hash新增key-value對:

h = {}                     #=> {}

h.store("a" ,1) #=> 1

h["a" ] #=> 1

h.fetch("a" ) #=> 1

h["b" ] = 2 #=> 2

h["b" ] #=> 2

p h #=>

store和= 方法是別名的關係,  fetch和方法是別名的關係。

三。清除hash的key-value對:

h =

刪除全部的k-v對,有兩種方法:

給hash賦空值

用clear方法 (這種方法更快一點)

shift方法隨機刪除k-v對。

h = 

h.shift #=> [:a, 1]

h #=>

a = h.shift #=> [:c, 3]

a #=> [:c, 3]

delete, delete_if, reject,reject! 方法刪除指定的k-v對:

h = 

h.delete(:a) #=> 1

h #=>

h = #=>

h.delete_if #=> {}

h #=> {}

h = #=>

h.delete_if #=>

h = #=>

h.reject #=>

h #=>

reject方法相當於dup.delete_if{}

四。顛倒hash的k-v對。

h =         #=> 

x = h.invert #=>

invert方法可以顛倒hash的鍵-值,可是因為hash鍵的唯一性,可能會發生上例那樣的資料丟失!

五。 hash的迭代:

有each, each_key, each_value ,each_pair(each方法的別名)

不舉例了。

六。檢測hash中的key,value:

檢測是否有key:

has_key?(include? 別名, 只能判斷key! ) ,key?, member?

檢測是否有value:

has_value? value?

七。將雜湊轉換為陣列:

h = 

h.to_a #=> [[:a, 1], [:b, 2]] 轉換為乙個二維陣列。

h.keys #=> [:a, :b]

h.values #=> [1,2]

下面的方法有用點:

h = 

h.values_at(:a,:b) #=> [1, 「2」] 根據指定的key返回對應values的陣列

八。根據條件選擇key-value對:

h.detect              #=> [:b, "2" ]

detect和find是別名關係,是enumerable模組裡的方法,hash類mixin這個模組,所以也可以用。select 方法,別名是find_all,可以返回多個匹配的k-v對:

h.select    #=> [[:a, 1], [:c, 5]]

九。 hash的排序:

可以直接用sort方法,不過會返回乙個二維陣列。

值得注意的是,當hash的key是symbol型別的時候,sort方法會出錯。

十。 合併兩個hash:

使用merge方法,( merge!和update是別名關係 (thx beck) )  。

h1 =           #=> 

h2 = #=>

h1.merge h2 #=>

h2.merge h1 #=>

注意看:b值的變化。

當然我們可以使用block來改變這一結局:

h1.merge h2 do  |k,old,new |

old < new ? old : new

end#=>

h1.merge h2 do |k,old,new |

p old

p new

end#=>2

#=>3

(當然我們可以使用rails裡active_support實現的revert_merge來實現上述效果)。

十一。 陣列轉換為hash:

當陣列元素為偶數個數的時候:

arr = %w[a b c d]         #=> ["a" , "b" , "c" , "d" ]

h = hash[*arr] #=>

此時陣列必須為偶數個元素。

十二。 當hash的key是動態變化的時候:

x = [1,2]                  #=> [1, 2]

h = #=>

h[x] #=> 2

x[0] = 5 #=> 5

h[x] #=> nil

h.rehash #=>

h[x] #=> 2

本文出自 

排序方法彙總

氣泡排序是非常容易理解和實現,以從小到大排序舉例 設陣列長度為n。1 比較相鄰的前後二個資料,如果前面資料大於後面的資料,就將二個資料交換。2 這樣對陣列的第0個資料到n 1個資料進行一次遍歷後,最大的乙個資料就 沉 到陣列第n 1個位置。3 n n 1,如果n不為0就重複前面二步,否則排序完成。按...

Hash方法彙總

一。給hash新增預設值 h h.default 7 h 1 2 h 3 4 h 4 7 h 5 7 二。給hash新增key value對 h h.store a 1 1 h a 1 h.fetch a 1 h b 2 2 h b 2 p h store和 方法是別名的關係,fetch和方法是別名...

執行緒方法彙總

1 isalive 作用 判斷當前的執行緒是否處於活動狀態 活動狀態是指執行緒已經啟動且尚未終止,執行緒處於正在執行或準備開始執行的狀態,就認為執行緒是存活的執行緒活動狀態返回true,否則返回false 2 setdameon boolean boo 作用 設定守護執行緒,boo為true是守護執...