私はハッシュテーブルの基本クラスを持っており、それから派生してさまざまなタイプのハッシュテーブルを作成しています。IHashableインターフェイスを実装するオブジェクトのみを受け入れることを許可します。たとえば、-
class LinearProbingHashTable<T> : HashTableBase<T> where T: IHashable
{
...
...
...
}
interface IHashable
{
/**
* Every IHashable implementation should provide an indentfying value for use in generating a hash key.
*/
int getIdentifier();
}
class Car : IHashable
{
public String Make { get; set; }
public String Model { get; set; }
public String Color { get; set; }
public int Year { get; set; }
public int getIdentifier()
{
/// ???
}
}
ハッシュ関数が車をハッシュテーブルに配置するために使用できる車の識別子を生成するための良い方法を誰かが提案できますか?
私は実際に、特定のクラスのIDを生成するための汎用ソリューションを本当に探しています。IHashableとそのgetIdentifierメソッドを実装するすべてのクラスの基本クラスHashableObjectが必要です。したがって、インスタンスの識別子を自動的に提供するHashableObjectから派生することができます。つまり、ハッシュテーブルに追加するオブジェクトごとに異なるgetIdentifierメソッドを作成する必要はありません。
public class HashableObject : IHashable
{
public int getIdentifier()
{
// Looking for code here that would generate an id for any object...
}
}
public class Dog : HashableObject
{
// Dont need to implement getIdentifier because the parent class does it for me
}