Ruby Hash基础知识

Ruby Hash基础知识

散列 是一种数据结构,它维护着一组被称为键的对象,每个键都与它的值相关联。简单地说,哈希是一个唯一的键和它们的值的集合。散列有时被称为 关联数组 ,因为它将值与每个键关联起来,但散列和数组之间有区别。数组总是使用一个整数值进行索引,而哈希则使用对象。哈希值也被称为 Map ,因为它们将键映射到值。

哈希字面或创建哈希: 哈希是用哈希字面创建的,哈希字面是一个用逗号分隔的键/值对列表,它总是包含在大括号{}中。有不同的方法来创建散列。

  • 使用新的类方法:新的类方法将创建一个空的哈希值,意味着创建的哈希值没有默认值。

语法:

hash_variable = Hash.new

示例:

geeks = Hash.new

这将创建一个空的hash geeks。你也可以通过以下两种方式为geeks提供默认值:

geeks = Hash.new("GFG")

or

geeks = Hash.new "GFG"

这里GFG是默认值。只要键或值不存在于上述哈希中,那么访问哈希将返回默认值 “GFG”。为了提供键/值对,你必须修改哈希值,这将在本文中讨论。

  • 使用{}大括号:在这个哈希变量后面是=大括号{}。在大括号{}之间,键/值对被创建。

语法:

hash_variable = {"key1" => value1, "key2" => value2}

获取哈希值: 要获取一个哈希值,必须将所需的键放在方括号[]内。

例子

# Ruby program to demonstrate the creation
# of hashes and fetching the hash values
  
#!/usr/bin/ruby
  
# Creating a hash using new class method
# without the default value
geeks = Hash.new
  
# empty hash will return nothing on display
puts "#{geeks[4]}"
  
# creating hash using new class method
# providing default value
# this could be written as 
# geeks = Hash.new "GFG"
geeks_default = Hash.new("GFG")
  
# it will return GFG for every index of hash
puts "#{geeks_default[0]}"
puts "#{geeks_default[7]}"
  
# creating hash using {} braces
geeks_hash1 = {"DS" => 1, "Java" => 2}
  
  
# fetching values of hash using []
puts geeks_hash1['DS']   
puts geeks_hash1['Java']  

输出


GFG GFG 1 2

在Ruby中修改哈希值: 哈希值可以通过在已经存在的哈希值中添加或删除一个键值/对来修改。同时,你也可以改变哈希中现有的键值。

例子

# Ruby program to demonstrate the modifying of hash
  
#!/usr/bin/ruby
  
# creating hash using {} braces
geeks_hash1 = {"DS" => 1, "Java" => 2}
  
puts "Before Modifying"
  
# fetching values of hash using []
puts geeks_hash1['DS']   
puts geeks_hash1['Java']  
  
puts "\n"
  
puts "After Modifying"
  
# modifying hash values
geeks_hash1["DS"] = 4
geeks_hash1["Java"] = 5
  
# fetching values of hash using []
puts geeks_hash1['DS'] 
puts geeks_hash1['Java'] 

输出

Before Modifying
1
2

After Modifying
4
5

注意: 每当用户为散列中的同一个键提供两个不同的值时,该键的前一个值就会被该键的最新值所覆盖。另外,程序将成功运行,但会给出一个警告,如下面的例子所示。

# Ruby program to demonstrate the modifying hash
  
#!/usr/bin/ruby
  
# creating hash using {} braces
# providing two different values to key "DS"
geeks_hash1 = {"DS" => 1, "DS" => 4,"Java" => 2}
  
puts "Before Modifying"
  
# fetching values of hash using []
puts geeks_hash1['DS']   
puts geeks_hash1['Java']  
  
puts "\n"
  
puts "After Modifying"
  
# modifying hash values
geeks_hash1["DS"] = 4
geeks_hash1["Java"] = 5
  
# fetching values of hash using []
puts geeks_hash1['DS'] 
puts geeks_hash1['Java'] 

输出

Before Modifying
4
2

After Modifying
4
5
main.rb:7: warning: key "DS" is duplicated and overwritten on line 7

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程