unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
Map

Map #

Di Ruby, tipe data yang mirip dengan “map” di bahasa pemrograman lain adalah Hash. Hash adalah struktur data yang menyimpan pasangan kunci-nilai (key-value pairs), di mana setiap kunci unik terkait dengan nilai tertentu. Hash memungkinkan penyimpanan data yang efisien dan akses cepat ke nilai berdasarkan kunci.

Mendefinisikan Hash #

Hash didefinisikan menggunakan kurung kurawal {} dan memisahkan kunci dan nilai dengan => atau menggunakan sintaks Ruby 1.9+ dengan dua titik :.

Contoh:

# Hash dengan sintaks lama
hash_old = { "name" => "Alice", "age" => 30 }

# Hash dengan sintaks Ruby 1.9+
hash_new = { name: "Alice", age: 30 }

Penjelasan:

  • hash_old menggunakan sintaks kunci-nilai dengan =>.
  • hash_new menggunakan sintaks yang lebih ringkas dengan : untuk simbol kunci.

Mengakses dan Memodifikasi Nilai #

a. Mengakses Nilai:

Nilai dalam hash diakses menggunakan kunci.

Contoh:

hash = { name: "Alice", age: 30 }
puts hash[:name]  # Output: Alice

Penjelasan:

  • Menggunakan hash[:name] untuk mengakses nilai yang terkait dengan kunci :name.

b. Menambahkan atau Memodifikasi Nilai:

Nilai baru atau yang diperbarui dapat ditambahkan dengan menetapkan nilai ke kunci.

Contoh:

hash = { name: "Alice", age: 30 }
hash[:location] = "New York"  # Menambahkan kunci baru
hash[:age] = 31  # Memodifikasi nilai kunci yang sudah ada
puts hash.inspect  # Output: {:name=>"Alice", :age=>31, :location=>"New York"}

Penjelasan:

  • hash[:location] = "New York" menambahkan kunci :location.
  • hash[:age] = 31 memodifikasi nilai untuk kunci :age.

Menghapus Kunci dan Nilai #

a. Menghapus dengan delete:

Menghapus elemen berdasarkan kunci dan mengembalikan nilai yang dihapus.

Contoh:

hash = { name: "Alice", age: 30 }
deleted_value = hash.delete(:age)
puts deleted_value  # Output: 30
puts hash.inspect    # Output: {:name=>"Alice"}

Penjelasan:

  • hash.delete(:age) menghapus kunci :age dan mengembalikan nilai yang dihapus.

Iterasi Melalui Hash #

a. Menggunakan each:

Iterasi melalui pasangan kunci-nilai dalam hash.

Contoh:

hash = { name: "Alice", age: 30 }
hash.each do |key, value|
  puts "#{key}: #{value}"
end

Penjelasan:

  • each mengiterasi melalui setiap pasangan kunci-nilai dan mencetaknya.

b. Menggunakan each_key dan each_value:

Iterasi hanya melalui kunci atau nilai.

Contoh:

hash = { name: "Alice", age: 30 }

# Iterasi melalui kunci
hash.each_key do |key|
  puts key
end

# Iterasi melalui nilai
hash.each_value do |value|
  puts value
end

Penjelasan:

  • each_key hanya mengiterasi melalui kunci.
  • each_value hanya mengiterasi melalui nilai.

Metode Hash Lainnya #

a. keys dan values:

  • keys: Mengembalikan array dari semua kunci.
  • values: Mengembalikan array dari semua nilai.

Contoh:

hash = { name: "Alice", age: 30 }
puts hash.keys.inspect   # Output: [:name, :age]
puts hash.values.inspect # Output: ["Alice", 30]

Penjelasan:

  • keys mengembalikan array dari semua kunci dalam hash.
  • values mengembalikan array dari semua nilai dalam hash.

b. has_key? dan has_value?:

  • has_key?: Memeriksa apakah hash memiliki kunci tertentu.
  • has_value?: Memeriksa apakah hash memiliki nilai tertentu.

Contoh:

hash = { name: "Alice", age: 30 }
puts hash.has_key?(:name)   # Output: true
puts hash.has_value?(30)    # Output: true

Penjelasan:

  • has_key?(:name) memeriksa apakah kunci :name ada.
  • has_value?(30) memeriksa apakah nilai 30 ada.

c. default:

Hash dapat diinisialisasi dengan nilai default yang digunakan jika kunci tidak ditemukan.

Contoh:

hash = Hash.new("not found")
puts hash[:non_existent_key]  # Output: not found

Penjelasan:

  • Hash.new("not found") menginisialisasi hash dengan nilai default "not found".

d. merge:

Menggabungkan dua hash, dengan kunci yang sama diperbarui dengan nilai dari hash yang di-merge.

Contoh:

hash1 = { name: "Alice", age: 30 }
hash2 = { location: "New York", age: 31 }
merged_hash = hash1.merge(hash2)
puts merged_hash.inspect  # Output: {:name=>"Alice", :age=>31, :location=>"New York"}

Penjelasan:

  • merge menggabungkan hash1 dan hash2, dengan nilai dari hash2 menggantikan nilai dari hash1 untuk kunci yang sama.

e. invert:

Membalik kunci dan nilai dalam hash.

Contoh:

hash = { name: "Alice", age: 30 }
inverted_hash = hash.invert
puts inverted_hash.inspect  # Output: {"Alice"=>:name, 30=>:age}

Penjelasan:

  • invert membalik kunci dan nilai dalam hash.

Hash Multidimensi #

Hash juga dapat memiliki hash lainnya sebagai nilai, membentuk struktur data multidimensi.

Contoh:

hash = {
  person1: { name: "Alice", age: 30 },
  person2: { name: "Bob", age: 25 }
}
puts hash[:person1][:name]  # Output: Alice

Penjelasan:

  • hash memiliki dua kunci utama (:person1 dan :person2), yang masing-masing berisi hash lainnya.

Kesimpulan #

Hash di Ruby adalah struktur data yang sangat fleksibel untuk menyimpan dan mengelola pasangan kunci-nilai. Dengan berbagai metode dan operasi yang disediakan, Anda dapat dengan mudah mengakses, memodifikasi, dan mengelola data dalam hash. Memahami berbagai operasi pada hash akan membantu Anda menulis kode Ruby yang lebih efisien dan efektif. Jika ada bagian tertentu yang perlu penjelasan lebih lanjut atau jika Anda memiliki pertanyaan lain, jangan ragu untuk bertanya!

« List
Date & Time »