Typically hash collisions are handled in two ways:
Use a larger hash, so that collisions are practically impossible.
Consider hash codes to be non-unique, and use an equality comparer for the actual data to determine uniqueness.
A 128 bit GUID uses the first method. The HashSet<T>
class in .NET is an example of the second method.