public void Insert(T item) { //byte f = this.fingerprintFunction(item); //uint fullHashCode = (uint)item.GetHashCode(); HashedItem hashedItem = new HashedItem(item, this.TABLE_SIZE); int[] buckets = new int[2]; for (int i = 0; i < 2; i++) { buckets[i] = this.table[hashedItem.Hash[i]]; } /* * for (int i = 0; i < 2; i++) { * if(b[i] == null) { * this.dict.Add(h[i], f); * return; * } * }*/ for (int i = 0; i < 2; i++) { if (buckets[i] >> 24 != 0) //there is room in the bucket for the fingerprint { this.table[hashedItem.Hash[i]] = this.append(buckets[i], hashedItem.Fingerprint); return; } } //we will need to do some kicking //1. "randomly" pick bucket 1 or 2 this.kickMove(hashedItem.Fingerprint, hashedItem.Hash[hashedItem.Fingerprint % 1], MAX_KICKS); }
public bool Contains(T item) { HashedItem hashedItem = new HashedItem(item, this.TABLE_SIZE); for (int i = 0; i < 2; i++) { if (this.bucketContains(this.table[hashedItem.Hash[i]], hashedItem.Fingerprint)) { return(true); } } return(false); }