Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Javaプログラマーが学ぶRuby基礎/Rubyのハッシュ

概要

Rubyのハッシュについて。

宣言と取得

下記の構文でハッシュを宣言出来ます。

変数名 = {"key1" => value1,"key2" => value2,・・・}
変数名 = Hash["key1" => value1,"key2" => value2,・・・]

下記の構文で値の取得ができます。

変数名["key1"]
変数名.fetch("key1")

追加

以下の構文でハッシュに要素を追加できます。

変数名["new_key"] = new_value
変数名.store("new_key") = new_value

サイズの取得

下記の構文でサイズの取得が出来ます

変数名.length
変数名.size

ハッシュのループ

keyとvalueのループ

変数名.each{|key,value|処理}

keyのループ

変数名.each_key{|key|処理}

valueのループ

変数名.each_value{|value|処理}

配列に変換

keyの配列に変換

変数名.keys

valueの配列に変換

変数名.values

配列に変換

変数名.to_a
サンプルコード

※人数に深い意味はありません

lang_population1 = {"Java" => 5000, "Ruby" => 10000000, "Dart" => 3}
lang_population2 = Hash["Java" => 5000, "Ruby" => 10000000, "Dart" => 3]

JAVA = "Java"
RUBY = "Ruby"
DART = "Dart"

puts "#{JAVA}の言語人口は#{lang_population1[JAVA]}"
puts "#{RUBY}の言語人口は#{lang_population1[RUBY]}"
puts "#{DART}の言語人口は#{lang_population1[DART]}"

puts "#{JAVA}の言語人口は#{lang_population2.fetch(JAVA)}"
puts "#{JAVA}の言語人口は#{lang_population2.fetch(RUBY)}"
puts "#{JAVA}の言語人口は#{lang_population2.fetch(DART)}"

C = "C"
VB = "VB"
lang_population1[C] = 1000
lang_population1.store(VB,1)
puts "#{C}の言語人口は#{lang_population1[C]}"
puts "#{VB}の言語人口は#{lang_population1[VB]}"

puts "現在の言語数は#{lang_population1.length}(length)"
puts "現在の言語数は#{lang_population1.size}(size)"

puts "------------------------------------------------"
lang_population1.each{|key,value|puts "#{key}の言語人口は#{value}"}
puts "------------------------------------------------"
lang_population1.each_key{|key|puts "#{key}の言語"}
puts "------------------------------------------------"
lang_population1.each_value{|value|puts "#{value}"}
puts "------------------------------------------------"
keys = lang_population1.keys
keys.each{|key|
  puts "key=#{key}"
}
puts "------------------------------------------------"
values = lang_population1.values
values.each{|value|
  puts "value=#{value}"
}
puts "------------------------------------------------"
hash_list = lang_population1.to_a
hash_list.each{|list|
  puts "list=#{list}"
}
出力
Javaの言語人口は5000人
Rubyの言語人口は10000000人
Dartの言語人口は3人
Javaの言語人口は5000人
Javaの言語人口は10000000人
Javaの言語人口は3人
Cの言語人口は1000人
VBの言語人口は1人
現在の言語数は5(length)
現在の言語数は5(size)
------------------------------------------------
Javaの言語人口は5000人
Rubyの言語人口は10000000人
Dartの言語人口は3人
Cの言語人口は1000人
VBの言語人口は1人
------------------------------------------------
Javaの言語
Rubyの言語
Dartの言語
Cの言語
VBの言語
------------------------------------------------
5000人
10000000人
3人
1000人
1人
------------------------------------------------
key=Java
key=Ruby
key=Dart
key=C
key=VB
------------------------------------------------
value=5000
value=10000000
value=3
value=1000
value=1
------------------------------------------------
list=["Java", 5000]
list=["Ruby", 10000000]
list=["Dart", 3]
list=["C", 1000]
list=["VB", 1]