婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Ruby中Hash哈希結構的基本操作方法小結

Ruby中Hash哈希結構的基本操作方法小結

熱門標簽:買了外呼系統不想用了怎么辦 邯鄲外呼調研線路 真人語音電銷機器人系統 開封百應電銷機器人聯系方式 北京語音電銷機器人價格 電話機器人電話卡封號怎么辦 樂昌電話機器人 武漢呼叫中心外呼系統線路商 浦東上海400開頭的電話申請

關于哈希
先來了解一下Hash的基本思路:
設要存儲對象的個數為num, 那么我們就用len個內存單元來存儲它們(len>=num); 以每個對象ki的關鍵字為自變量,用一個函數h(ki)來映射出ki的內存地址,也就是ki的下標,將ki對象的元素內容全部存入這個地址中就行了。這個就是Hash的基本思路。
為什么要用一個函數來映射出它們的地址單元呢?
假設現在我要存儲4個元素 13 7 14 11
顯然,我們可以用數組來存。也就是:a[1] = 13; a[2] = 7; a[3] = 14; a[4] = 11;
當然,我們也可以用Hash來存。下面給出一個簡單的Hash存儲:
先來確定那個函數。我們就用h(ki) = ki%5;
對于第一個元素 h(13) = 13%5 = 3; 也就是說13的下標為3;即Hash[3] = 13;
對于第二個元素 h(7) = 7 % 5 = 2; 也就是說7的下標為2; 即Hash[2] = 7;
同理,Hash[4] = 14; Hash[1] = 11;
現在我要你查找11這個元素是否存在。你會怎么做呢?當然,對于數組來說,那是相當的簡單,一個for循環就可以了。
也就是說我們要找4次。
下面我們來用Hash找一下。
首先,我們將要找的元素11代入剛才的函數中來映射出它所在的地址單元。也就是h(11) = 11%5 = 1了。下面我們來比較一下Hash[1]?=11, 這個問題就很簡單了。也就是說我們就找了1次。這個就是Hash的妙處了,通過制定一個規則(函數)來映射出它的地址,數據也就能通過這個規則去找到它的內存地址了。

Ruby中的Hash結構
1.創建哈希:就像創建數組一樣,我們可以通過Hash類來創建一個Hash實例:

h1 = Hash.new                         #默認值為nil
h2 = Hash.new(“This is my first hash instance”) #默認值為” This is my first hash instance”:

上面兩個例子都創建了一個空的Hash實例。一個Hash對象總是有一個默認的值——因為如果在一個Hash對象里沒有找到指定的索引(key),將會返回默認值。
創建了Hash對象后,我們就可以像數組那樣給他添加/刪除項了。唯一不同的是,在數組中的索引只是能整數,而在Hash中索引(key)可以是任何類型(any type of object)且唯一的數據:

h2["one"] = "北京"
h2["two"] = "上海"
h2["three"] = "深圳"
h2["four"] = "廣州"

Note: 如果在給Hash賦值時,使用的相同的key,那么后面的值會覆蓋掉前面的值。另外,Ruby還提供了一種方便的創建和初始化Hash的方法,只需要在key后面加一個=>符號并跟一個值即可。每個key-value對用逗號隔開。然后整體用大括號括起來:

h2 = {
"one" => "北京",
"two" =>"上海",
"three" =>"深圳",
"four" =>"廣州"  
}

2.通過索引存取Hash的值:
要想獲取某個值,可以用下面的方法:

  puts h2[“one”]       #=>”北京”

如果指定的key不存在,將返回默認的值(前面有提到過)。此外,我們還可以用default方法獲取默認值,用default+=方法設置默認值

      puts h1.default
      h1.default += “This is set value method”

3.復制Hash:
和數組一樣,我們可以把一個Hash變量分配給另一個hash變量,它們都引用想同的Hash,所以如果其中一個的值變了,那么另外一個的值也會跟著變:

    h3 = h2
    h3[“one”] = “西安”
    puts h h2[“one”]        #=>”西安”

有的時候我們不希望上面的情況發生,即:修改了其中一個的值另一個也跟著修改了,我們可以使用clone方法make a new 

copy
    h4 = h2.clone
    h4[“one”] = “大連”
    puts h2[“one”]              #=>”西安”(i.e. 值沒有修改)

4.Hash排序:
當我們需要對Hash進行排序時,不能像數組那樣簡單的使用sort方法,因為數組中的數據類型都是一樣的(整型),Hash中的數據類型可能并不完全一樣,如整數類型和字符串類型就沒法一起排序,此時就需要我們進行處理,如下(如果Hash中的數據類型全部相同可以不進行如下處理):
      

 def sorted_hash(aHash)
       return aHash.sort{
           |a,b| a.to_s => b.to_s           
       }
    End
h1 = {1=>'one', 2=>'two', 3=> 'three'}
h2 = {6=>'six', 5=>'five', 4=> 'four'}
h3 = {'one'=>'A', 'two'=>'B','three'=>'C'}
h4 = h1.merge(h2)           #合并hash
h5 = h1.merge(h3)
def sorted_hash(aHash)
  return aHash.sort{|a,b| a.to_s => b.to_s }
end
p(h4)          
p(h4.sort)
p(h5)
p(sorted_hash(h5))

結果:

{5=>"five", 6=>"six", 1=>"one", 2=>"two", 3=>"three", 4=>"four"}
[[1, "one"], [2, "two"], [3, "three"], [4, "four"], [5, "five"], [6, "six"]]
{"two"=>"B", "three"=>"C", 1=>"one", 2=>"two", "one"=>"A", 3=>"three"}
[[1, "one"], [2, "two"], [3, "three"], ["one", "A"], ["three", "C"], ["two", "B"]]

 
事實上Hash的sort方法是把一個Hash對象轉換成以[key,value]為單個元素的一個數組,然后再用數組的sort方法進行排序。
 
5.Hash類常用方法:

方法

說明

size()

返回Hash對象的長度

length()

返回Hash對象的長度

include?(key)

判斷指定的Hash對象是否包含指定的key

has_key?(key)

判斷指定的Hash對象是否包含指定的key

delete(key)

刪除Hash對象中指定key的對應元素

keys()

返回由Hash對象中全部key組成的數組

values()

返回由Hash對象中全部value組成的數組


e.g.
       

 student = {
         "name" => "Steve",
         "age" => 22,
         "Gender" => "male"
        }   
   p student.keys                           #=> ["name", "Gender", "age"]
   p student.values                        #=> ["Steve", "male", 22]
   puts student.include?("age")                #=> true
   puts student.size                          #=> 3
   student.delete("Gender")
   puts student.has_key?("Gender")              #=>false
   puts student.size                          #=>2

 
深度挖掘
1.把Hash當作數組來處理:
Hash中的keys and values方法的返回值都是一個數組,所以我們可以使用數組的方法來對它們操作:

h1 = {1=>'one', 2=>'two', 3=> 'three',4=> 'four'}
h2 = {1=>'one', 3=>'two', 4=> 'four',5=> 'five'}
 
p( h1.keys  h2.keys )
p( h1.values  h2.values )
p( h1.keys+h2.keys )
p( h1.values-h2.values )
p( (h1.keys  h2.keys) )
p( (h1.keys  h2.keys).flatten)

結果:

[1, 3, 4]
["one", "two", "four"]
[1, 2, 3, 4, 5, 1, 3, 4]
["three"]
[1, 2, 3, 4, [5, 1, 3, 4]]
[1, 2, 3, 4, 5, 1, 3, 4]

 
2.追加和連續的區別:
+:給一個數組添加元素,創建一個新的數組
:給一個數據添加元素,直接操作原數組,當給一個數組添加的新元素也是一個數組時,該新元素作為數組的最后一個元素:

  a=[1,2,3]
  b=[4,5,6]
 
  p(a+b)
  p(ab)

結果:

[1, 2, 3, 4, 5, 6]
[1, 2, 3, [4, 5, 6]]     #[1, 2, 3, [4, 5, 6]].flatten =>[1, 2, 3, 4, 5, 6]

您可能感興趣的文章:
  • Ruby中的Hash哈希類型基本操作方法小結
  • Ruby中關于hash的基本使用方法
  • Ruby中Hash的11個問題解答
  • Ruby字符串、條件、循環、數組、Hash、類基本操作筆記
  • Ruby簡明教程之數組和Hash介紹

標簽:宜春 松原 自貢 六安 淄博 鄂州 石嘴山 河北

巨人網絡通訊聲明:本文標題《Ruby中Hash哈希結構的基本操作方法小結》,本文關鍵詞  Ruby,中,Hash,哈希,結構,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Ruby中Hash哈希結構的基本操作方法小結》相關的同類信息!
  • 本頁收集關于Ruby中Hash哈希結構的基本操作方法小結的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人理论电影网| 国产在线精品一区二区不卡了 | 日韩一区二区三区电影在线观看 | 午夜精品一区二区三区电影天堂| 日日噜噜夜夜狠狠视频欧美人 | 日韩欧美区一区二| 欧美人与性动xxxx| 欧美一区二区三区四区在线观看| 欧美日韩中文另类| 欧美日韩免费观看一区二区三区| 欧美日韩免费在线视频| 717成人午夜免费福利电影| 日韩一区二区不卡| 国产偷国产偷亚洲高清人白洁| 久久亚洲一区二区三区明星换脸| 日本一区二区三区在线观看| 国产精品美女一区二区在线观看| 国产精品久久久久久久久动漫 | 一区二区三区视频在线观看| 亚洲成人动漫在线观看| 激情综合网激情| av在线不卡电影| 欧美精品日韩精品| 精品国产伦一区二区三区观看体验 | 一区二区三区四区高清精品免费观看| 亚洲永久免费av| 久久成人18免费观看| 国产69精品久久久久毛片| www.性欧美| 欧美精品在线一区二区| 精品动漫一区二区三区在线观看| 国产精品乱码久久久久久| 99久久久免费精品国产一区二区| 在线观看网站黄不卡| 精品国产91亚洲一区二区三区婷婷| 国产精品护士白丝一区av| 婷婷久久综合九色综合伊人色| 国产乱国产乱300精品| 色av一区二区| 亚洲国产精品成人久久综合一区| 亚洲二区视频在线| 成人的网站免费观看| 日韩欧美123| 亚洲国产成人av好男人在线观看| 国产精品亚洲а∨天堂免在线| 色94色欧美sute亚洲13| 久久毛片高清国产| 亚洲一区av在线| 91丝袜美腿高跟国产极品老师| 精品久久久久香蕉网| 亚洲va在线va天堂| 99免费精品在线| 2017欧美狠狠色| 日日摸夜夜添夜夜添亚洲女人| 日本韩国一区二区三区| 中文字幕av一区二区三区高| 免费成人在线观看| 欧美体内she精视频| 国产精品久久久久久久久久免费看 | 欧美日韩精品一区二区三区四区| 国产欧美日韩三区| 国产一本一道久久香蕉| 日韩午夜激情av| 日韩av网站在线观看| 在线视频综合导航| 亚洲精品欧美激情| 成人97人人超碰人人99| 久久久高清一区二区三区| 日本中文在线一区| 欧美一区二区在线播放| 美女一区二区三区在线观看| 欧美日韩国产综合草草| 五月婷婷综合在线| 欧美日韩亚洲丝袜制服| 日韩av一区二区三区四区| 欧美日本一区二区| 免费在线看成人av| 精品久久久久av影院 | 亚洲美女区一区| 91丨九色丨蝌蚪丨老版| 一级特黄大欧美久久久| 91成人看片片| 日韩精品免费视频人成| 日韩美女一区二区三区四区| 国模冰冰炮一区二区| 国产精品久久久久久妇女6080| av资源网一区| 亚洲成人7777| 欧美大黄免费观看| 国产精品一级在线| 亚洲女同女同女同女同女同69| 色婷婷综合激情| 美女视频一区二区| 亚洲国产高清在线| 欧美在线一区二区| 捆绑调教美女网站视频一区| 国产日韩欧美a| 欧美色涩在线第一页| 经典三级一区二区| 亚洲图片激情小说| 这里是久久伊人| 国产不卡视频在线播放| 亚洲精品第1页| 精品久久久久av影院| 一本久久a久久精品亚洲| 秋霞成人午夜伦在线观看| 日本一区二区视频在线观看| 欧美日韩在线播放三区| 国产精品99久久久久久久vr| 亚洲国产欧美在线| 国产亚洲一区二区三区在线观看| 一本一本久久a久久精品综合麻豆| 日本午夜一本久久久综合| 国产精品久久久久久久第一福利 | 国产乱国产乱300精品| 亚洲精品乱码久久久久久久久 | 91麻豆6部合集magnet| 欧美aa在线视频| 亚洲激情av在线| 国产色婷婷亚洲99精品小说| 在线观看中文字幕不卡| eeuss鲁片一区二区三区| 美女诱惑一区二区| 亚洲二区在线观看| 亚洲人成在线观看一区二区| 久久久亚洲午夜电影| 在线不卡a资源高清| 欧美在线一二三四区| www.成人网.com| 国产盗摄女厕一区二区三区| 日本麻豆一区二区三区视频| 亚洲激情欧美激情| 亚洲欧美一区二区不卡| 国产精品久久久久婷婷| 国产清纯在线一区二区www| 欧美一区二区国产| 欧美精品九九99久久| 欧美写真视频网站| 欧日韩精品视频| 91片黄在线观看| 91视视频在线直接观看在线看网页在线看| 极品美女销魂一区二区三区免费| 日韩国产在线观看一区| 亚洲电影一级片| 亚洲激情自拍偷拍| 亚洲丝袜另类动漫二区| 成人免费在线播放视频| 国产精品天美传媒| 亚洲人成伊人成综合网小说| 中文字幕一区av| 亚洲欧美经典视频| 一区二区三区四区视频精品免费 | 欧美亚日韩国产aⅴ精品中极品| 91欧美激情一区二区三区成人| 成人黄色在线看| av网站一区二区三区| 99久久99久久精品免费看蜜桃| 99精品欧美一区二区三区综合在线| zzijzzij亚洲日本少妇熟睡| 一本大道综合伊人精品热热| 94-欧美-setu| 欧美日精品一区视频| 欧美精品在欧美一区二区少妇| 日韩欧美精品在线视频| 国产亚洲欧美色| 亚洲男人的天堂在线aⅴ视频| 亚洲一区二区欧美日韩| 轻轻草成人在线| 国产91对白在线观看九色| jlzzjlzz亚洲日本少妇| 欧美三级中文字幕| 精品乱人伦小说| 日韩毛片高清在线播放| 日本强好片久久久久久aaa| 美女视频黄频大全不卡视频在线播放| 精品一区二区三区欧美| 国产高清精品网站| 色激情天天射综合网| 精品国偷自产国产一区| 亚洲理论在线观看| 久久激情五月激情| 91免费观看国产| 精品日韩在线一区| 一卡二卡欧美日韩| 精品一区二区三区欧美| 色成人在线视频| 久久精品在线免费观看| 亚洲成av人片一区二区梦乃| 国产精品影视在线观看| 欧美视频在线观看一区二区| 久久综合色一综合色88| 亚洲成人av福利| 99热国产精品| 久久综合色鬼综合色| 亚洲国产成人av| 99精品欧美一区二区三区综合在线| 91精品国产品国语在线不卡| 一区二区三区小说| 国产91精品欧美| 久久综合狠狠综合久久激情|