Ruby 哈希(Hash)


Ruby哈希(Hash)技术文档

什么是哈希(Hash)?

哈希(Hash)是一种用于存储键值对的数据结构,又称为关联数组(associative array)或字典(dictionary),它用key-value(键-值)对的方式存储数据。哈希是Ruby中最常用的数据结构之一,它可以通过键来快速地访问值。

如何创建哈希(Hash)?

Ruby中的哈希可以使用以下两种方式创建:

  1. 使用大括号 {},将键值对放在大括号内,用逗号隔开。
  2. 使用哈希字面量构造方式,将键值对放在大括号内,用逗号隔开。

以下是创建哈希的示例代码:

# 使用大括号的方式创建哈希
hash1 = { "name" => "Lily", "age" => 18, "gender" => "female" }

# 使用哈希字面量构造方式创建哈希
hash2 = { name: "Tom", age: 20, gender: "male" }

如何访问哈希(Hash)中的值?

可以通过哈希中的键来访问它的值,以下是示例代码:

hash = { "name" => "Lily", "age" => 18, "gender" => "female" }

puts hash["name"]   # 输出:Lily
puts hash["age"]    # 输出:18
puts hash["gender"] # 输出:female

如何添加和修改哈希(Hash)中的键值对?

可以使用[]=store方法向哈希中添加或修改键值对,以下是示例代码:

hash = { "name" => "Lily", "age" => 18, "gender" => "female" }

# 添加键值对
hash["city"] = "Beijing"

# 修改键值对
hash["age"] = 19

puts hash # 输出:{"name"=>"Lily", "age"=>19, "gender"=>"female", "city"=>"Beijing"}

如何删除哈希(Hash)中的键值对?

可以使用delete方法将键值对从哈希中删除,以下是示例代码:

hash = { "name" => "Lily", "age" => 18, "gender" => "female" }

# 删除键值对
hash.delete("age")

puts hash # 输出:{"name"=>"Lily", "gender"=>"female"}

哈希(Hash)的常见方法

  • has_key?(key)key?:判断哈希是否包含指定的键。
  • has_value?(value):判断哈希是否包含指定的值。
  • lengthsize:返回哈希元素的个数。
  • keys:返回哈希中所有的键。
  • values:返回哈希中所有的值。
  • each:遍历哈希中的每一个键值对。
  • clear:删除哈希中所有的键值对。

以下是示例代码:

hash = { "name" => "Lily", "age" => 18, "gender" => "female" }

puts hash.has_key?("name")   # 输出:true   
puts hash.key?("gender")     # 输出:true
puts hash.has_value?(18)     # 输出:true

puts hash.length             # 输出:3
puts hash.keys               # 输出:["name", "age", "gender"]
puts hash.values             # 输出:["Lily", 18, "female"]

hash.each {|key, value| puts "#{key} is #{value}"}
# 输出:
# name is Lily
# age is 18
# gender is female

hash.clear
puts hash                   # 输出:{}

总结

通过哈希,我们可以方便地存储和访问键值对,哈希中的键具有唯一性,它可以快速地查找值。同时,我们还可以使用哈希的常见方法来操作哈希数据。