Chapter 10. Data Structures and Algorithms
In this chapter, we look at certain data structures and algorithms that are not available for you in the Framework Class Library (FCL) through Version 1.1. Examples are provided for algorithms like hash code creation and string balancing. The FCL does not support every data structure you might need, so this chapter provides solutions for priority and double queues, binary and n-ary trees, sets, and a multimap, as well as many other things.
10.1. Creating a Hash Code for a Data Type
Problem
You have created a class or structure
that will be used as a key in a Hashtable
. You
need to overload the GetHashCode
method in order
to return a good distribution of hash values to be used in a
Hashtable
(the Discussion section defines a good
distribution of hash values). You also need to choose the best hash
code algorithm to use in the GetHashCode
method of
your object.
Solution
The following procedures implement hash code algorithms and can be
used to override the GetHashCode
method. Included
in the discussion of each method are the pros and cons of using it,
as well as why you would want to use one instead of another.
In addition, it
is desirable, for performance reasons, to use the return value of the
GetHashCode
method to determine whether the data
contained within two objects is equal. Calling
GetHashCode
to return a hash value of two objects
and comparing their hash values can be faster than calling
Equals
, which individually tests the equality ...
Get C# Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.