示例#1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Введите кол-во потоков");
            var n = int.Parse(Console.ReadLine() ?? throw new InvalidOperationException());

            Console.WriteLine("Введите основание hash функции");
            var k = int.Parse(Console.ReadLine() ?? throw new InvalidOperationException());


            var hashT  = new CustomHashTable(k);
            var locker = new object();

            Parallel.For((long)0, n, i =>
            {
                while (true)
                {
                    Thread.Sleep(50);
                    var rand  = new Random();
                    var key   = rand.Next(int.MinValue, int.MaxValue);
                    var value = rand.Next(int.MinValue, int.MaxValue);
                    lock (locker)    //TODO
                    {
                        hashT.Insert(key, value);
                    }

                    var msg = $"key: {key}, value: {value}";
                    Console.WriteLine(msg);
                    Thread.Sleep(100);
                }
            }
                         );
        }
示例#2
0
        static void Main(string[] args)
        {
            //CustomHashTable<string, string> ht = new CustomHashTable<string, string>(3);

            //ht.Insert("Кладбище домашних животных", "Стивен Кинг");
            //ht.Insert("Тёмная башня", "Стивен Кинг");
            //ht.Insert("Владычица озера", "Анджей Сапковский");
            //ht.Insert("Крещение огнём", "Анджей Сапковский");
            //ht.Insert("Башная ласточки", "Анджей Сапковский");

            int length = 200;

            CustomHashTable <string, int> ht = new CustomHashTable <string, int>(length);

            Random rnd = new Random();

            string testKey = "";

            for (int i = 0; i < length; i++)
            {
                string str = "";

                for (int j = 0; j < 10; j++)
                {
                    str += (char)rnd.Next(65, 124);
                }

                if (i == 0)
                {
                    testKey = str;
                }

                ht.Insert(str, rnd.Next(1, 101));
            }

            foreach (var pair in ht)
            {
                Console.WriteLine(pair.Key + " : " + pair.Value);
            }

            Console.WriteLine(new string('-', 30));

            Console.WriteLine(ht[testKey]);
            Console.WriteLine(ht.Search(testKey));

            ht.Delete(testKey);

            try
            {
                Console.WriteLine(ht.Search(testKey));
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            Console.ReadKey();
        }
示例#3
0
        public static void Main()
        {
            var table = new CustomHashTable <int, string>();

            for (int i = 0; i < 50; i++)
            {
                table.Add(i, i.ToString());
            }

            Console.WriteLine(table);
            Console.WriteLine(table.Count);
        }
        private void ResizeIfNeeded()
        {
            if (this.elementsCounter >= this.elements.Length * LoadFactor)
            {
                var newCustomHashTable = new CustomHashTable <K, V>(this.elements.Length * 2);

                foreach (var pair in this)
                {
                    newCustomHashTable.Add(pair.Key, pair.Value);
                }

                this.elements = newCustomHashTable.elements;
            }
        }