public int CompareTo(HashSetPair <k, v> other, k key) //Referans karsilastirmasi yapmamak adina ozel bir karsilastirma fonksiyonu olusturulur. { //Comparer.Default.Compare kullanilarak degerler karsilastirilir. if (other == null) { return(1); } return(Comparer.Default.Compare((k)key, (k)other.key)); // Karsilastirilmak istenen veri turu 'k' oldugu icin cast yapilir. }
public bool Add(k key, v value) //Listeye HasSetPair nesnelerini ekler. { if (LoadFactor() > maxLoadFactor) { Resize(tableSize * 2); } HashSetPair <k, v> hashSetPair = new HashSetPair <k, v>(key, value); int hashValue = key.GetHashCode(); hashValue = hashValue & 0x7fffffff; hashValue = hashValue % tableSize; harray[hashValue].AddFirst(hashSetPair); numElements++; return(true); }
public void Resize(int newSize) //Buyuyen dizinin yeniden boyutlanmasini saglar. { LinkedList <HashSetPair <k, v> >[] newSetPair = new LinkedList <HashSetPair <k, v> > [newSize]; for (int i = 0; i < newSize; i++) //Yeni bir dizi olusturulur, ici bos LinkedList nesneleri olusturulur. { newSetPair[i] = new LinkedList <HashSetPair <k, v> >(); } foreach (var iterator in this.harray) //Eski listedeki degerler yeni listeye aktarilir. { foreach (var setPair in iterator) { HashSetPair <k, v> newHashList = new HashSetPair <k, v>(setPair.key, setPair.value); int hashValue = setPair.key.GetHashCode(); hashValue = hashValue & 0x7fffffff; hashValue = hashValue % newSize; newSetPair[hashValue].AddFirst(newHashList); } } harray = newSetPair; //Yeni dizinin referansi eskisine aktarilir. tableSize = newSize; }