一。給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是守護執...