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