散列(hash)

关联数组是这样的数组,它的每个数据元素与一个键相配对,该键用于识别数据元素。由于散列函数用来创建关联数组中的指定元素,并在关联数组中查找指定元素,因此关联数组通常称为散列。

 

在某种意义上,数组元素与列表类似,而散列元素的存放与几何类似,其元素之间没有相对次序,在Ruby中,

数组与散列之间的两个最本质的区别是:

(1)数组使用数值下标来定位特定的元素,而散列使用字符串值(键)来定位元素;

(2)数组中的元素按下标排序,而散列中的元素则不是。

 

散列的创建方法有两种:new方法或将一个字面量赋值给一个变量。

注意:Ruby返回的散列顺序与创建散列所用的散列字面量的顺序是不同的。因为散列在内存中的世纪顺序是

不可预知的(至少对用户程序是这样的)

 

 

定义:通过将单项数学函数(散列算法)应用到任意数量的数据所得到的固定的大小。假如输入数据中发生更改,则消息

摘要的结果值也要更改。消息摘要也被称为散列

存储地址=hash(关键码) hash 散列函数

散列查找法(也称杂凑查找法)是通过对记录的关键字进行了某个函数,直接得到记录的存储地址,

不需要进行关键字的反复比较。

基本操作:

 访问散列中的单个值元素

     可通过将用作下标音乐散列的方式访问散列中的单个值元素,与访问数组一样,使用方括号

来指定这种下标操作。

例如:>>kids_ages["Genny"]

          =>42

向散列中添加新值

    可通过将新元素的值付给新元素的键引用散列添加新值

例如:>>kids_ages["Aidan"]=10;

        

=> {"Aidan"=>10,"Darcie" =>27,"John" => 44,"Genny" => 42,"Jake" =>28} [2] 

删除散列元素

可用delete方法删除散列元素,delete方法的参数是一个元素键。例如:

>> kids_ages.delete("Genny")

=>42

=>kids_ages

=>{"Aidan"=>10,"Darcie" =>27,"John" => 44,"Jake" =>28} [2] 

将散列设置为空散列

可采用两种方法将散列设置为空散列:

(1)把一个空散列字面量赋给散列,例如:

>> hi_temps = {"mon" => 74,"tue" =>78}

=>{"mon" => 74,"tue" =>78}

>> hi_temp = { }

=> { }

(2)对散列使用clear方法,例如:

>> salaries = {"Fred" => 47400,"Mike" =>45250}

=>{"Fred" => 47400,"Mike" =>45250}

>> salaries.clear

=> { } [2] 

确定散列中是否具有某一特定建的元素

判定方法 has_key? 用于确定散列中是否具有某一特定建的元素。例如,假设仍采用前文中定义的kids_ages散列,则has_key?的用法如下所示:

>> kids_ages.has_key?("John")

=> true

>> kids_ages.has_key?("Henry")

=> false [2] 

提取散列的值到数组中

可分别使用方法keys和values将散列的键和值提取到数组中,如下所示:

>>kids_ages.keys

=> ["Aidan","Darcie","John","Jake"]

>> kids_ages.values

=> [10,27,44,28]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值