Hash Table

After reading this chapter and engaging in the embedded activities and reflections, you should be able to:

  • Identify the steps of hashing (convert to hash code and compression).
  • Enumerate the properties of a good hash function.
  • Describe the job of Java's hashCode method.
  • Define what a hash table is.
  • Explain what collision (in the context of hashing) is and when it happens.
  • Describe Open Addressing with Linear Probing as a collision resolution.
  • Understand and apply the tombstone mechanism when removing an entry from a Hash Table with open addressing schemes.
  • Explain what is meant by contamination of open address hash tables.
  • Understand rehashing well enough to implement it.
  • Compute the load factor of a hash table.
  • Determine table size and when to rehash.
  • Analyze the efficiency of "open address" hash tables.
  • Describe primary (and secondary) clustering effect of linear probing.
  • Describe other probing strategies (quadratic, double hashing, $\dots$, for open address hash table.
  • Differentiate chaining collision resolution from open addressing.
  • Analyze the efficiency of "separate chaining" hash tables.

This chapter does not have a starter/solution code because a homework is about implementing hash tables.