public static void Main() { var jHashTable = new JHashTable <int, string>(); jHashTable.Add(3, "ar"); jHashTable[2] = "asd"; var indexCheck = jHashTable[2]; Console.WriteLine("toString:"); Console.WriteLine(jHashTable); Console.WriteLine("indexer:"); Console.WriteLine(jHashTable[2]); Console.WriteLine(indexCheck); Console.WriteLine("keys:"); var keysChecker = jHashTable.Keys; foreach (var key in keysChecker) { Console.WriteLine(key); } Console.WriteLine("count:"); Console.WriteLine(jHashTable.Count); Console.WriteLine("remove:"); jHashTable.Remove(4); Console.WriteLine(jHashTable[2]); jHashTable.Remove(2); Console.WriteLine(jHashTable[2]); Console.WriteLine("count:"); Console.WriteLine(jHashTable.Count); string res; var findChecker = jHashTable.Find(3, out res); Console.WriteLine("Find value by key 3:"); Console.WriteLine(res); Console.WriteLine(findChecker); Console.WriteLine(jHashTable); Console.WriteLine("clear"); jHashTable.Clear(); Console.WriteLine(jHashTable); Console.WriteLine("----"); Console.WriteLine("resize"); for (int i = 0; i < 100; i++) { jHashTable.Add(i, i.ToString()); } Console.WriteLine(jHashTable); }
/// <summary> /// Constructor that initializes the hash table with predefined capacity /// </summary> /// <param name="capacity">The initial size of the JHash table</param> /// <param name="jHashTable">Another JHash table to inculde in this one</param> public JHashTable(int capacity, JHashTable <K, T> jHashTable) : this(capacity) { foreach (var pair in jHashTable) { this.Add(pair.Key, pair.Value); } }
private void CheckAndGrow() { if (this.occupiedBucketsCounter >= this.buckets.Length * LoadFactor) { var newJHashTable = new JHashTable <K, T>(this.buckets.Length * 2); foreach (var pair in this) { newJHashTable.Add(pair.Key, pair.Value); } this.buckets = newJHashTable.buckets; } }