class DataStructures101::ChainedHashTable
HashTable implementation using separate chaining strategy for collision-resolution It subclasses Hash::BaseHashTable
@author Rene Hernandez @since 0.2
Public Class Methods
new(capacity: 31, prime: 109_345_121, compression_lambda: nil)
click to toggle source
Calls superclass method
# File lib/data_structures_101/chained_hash_table.rb, line 10 def initialize(capacity: 31, prime: 109_345_121, compression_lambda: nil) super end
Private Instance Methods
bucket_delete(hash_code, key)
click to toggle source
# File lib/data_structures_101/chained_hash_table.rb, line 34 def bucket_delete(hash_code, key) bucket = @table[hash_code] return nil if bucket.nil? old_size = bucket.size value = bucket.delete(key) @size -= (old_size - bucket.size) value end
bucket_each() { |key, value| ... }
click to toggle source
# File lib/data_structures_101/chained_hash_table.rb, line 45 def bucket_each @table.each do |bucket| next if bucket.nil? bucket.each do |key, value| yield(key, value) end end end
bucket_find(hash_code, key)
click to toggle source
# File lib/data_structures_101/chained_hash_table.rb, line 16 def bucket_find(hash_code, key) bucket = @table[hash_code] return nil if bucket.nil? bucket.find(key) end
bucket_insert(hash_code, key, value)
click to toggle source
# File lib/data_structures_101/chained_hash_table.rb, line 23 def bucket_insert(hash_code, key, value) bucket = @table[hash_code] bucket = @table[hash_code] = Hash::Bucket.new if bucket.nil? old_size = bucket.size old_value = bucket.insert(key, value) @size += (bucket.size - old_size) old_value end