示例#1
0
        static void Main(string[] args)
        {
            SortedList    sl   = new SortedList();
            Library       lb1  = new Library("A", 1950, 52);
            Library       lb2  = new Library("B", 1990, 50);
            ShipComp      sc1  = new ShipComp("C", 1950, 200);
            ShipComp      sc2  = new ShipComp("D", 1975, 350);
            InsuranceComp ic1  = new InsuranceComp("E", 1990, 52);
            Plant         pl1  = new Plant("F", 2000, 300);
            Plant         pl2  = new Plant("G", 1950, 500);
            Organization  org1 = new Organization("H", 1980);

            sl.Add(lb1.Name + "-" + lb1.Founded, lb1);
            sl.Add(lb2.Name + "-" + lb2.Founded, lb2);
            sl.Add(sc1.Name + "-" + sc1.Founded, sc1);
            sl.Add(sc2.Name + "-" + sc2.Founded, sc2);
            sl.Add(ic1.Name + "-" + ic1.Founded, ic1);
            sl.Add(pl1.Name + "-" + pl1.Founded, pl1);
            sl.Add(pl2.Name + "-" + pl2.Founded, pl2);
            sl.Add(org1.Name + "-" + org1.Founded, org1);


            int  operation;
            bool stop = false;

            #region demo1
            ListFunctions();
            do
            {
                Console.WriteLine("Введите номер нужной операции");
                operation = EnterIntNumber();
                switch (operation)
                {
                case 0:
                {
                    Console.WriteLine("Работа завершена");
                    stop = true;
                    break;
                }

                case 1:
                {
                    EngsAtEveryPlant(sl);
                    break;
                }

                case 2:
                {
                    int libs = NumberOfLibs(sl);
                    Console.WriteLine($"В коллекции {libs} библиотек");
                    break;
                }

                case 3:
                {
                    Console.WriteLine($"Сумма страховых фондов = {InshFondSum(sl)} млн");
                    break;
                }

                case 4:
                {
                    foreach (DictionaryEntry x in sl)
                    {
                        Organization temp = (Organization)x.Value;
                        temp.VShow();
                        Console.WriteLine();
                    }
                    break;
                }

                case 5:
                {
                    AddElement(ref sl);
                    break;
                }

                case 6:
                {
                    DeleteElement(ref sl);
                    break;
                }

                default:
                {
                    Console.WriteLine("Операции с данным номером не существует. Введите другой номер");
                    break;
                }
                }
            } while (!stop);
            Console.WriteLine("Для продолжения нажмите Enter");
            Console.ReadLine();
            Console.Clear();

            #endregion

            List <Organization> sl2 = new List <Organization>();
            sl2.Add(lb1);
            sl2.Add(lb2);
            sl2.Add(sc1);
            sl2.Add(sc2);
            sl2.Add(ic1);
            sl2.Add(pl1);
            sl2.Add(pl2);
            sl2.Add(org1);
            stop = false;

            #region demo2
            ListFunctions();
            do
            {
                Console.WriteLine("Введите номер нужной операции");
                operation = EnterIntNumber();
                switch (operation)
                {
                case 0:
                {
                    Console.WriteLine("Работа завершена");
                    stop = true;
                    break;
                }

                case 1:
                {
                    EngsAtEveryPlant(sl2);
                    break;
                }

                case 2:
                {
                    int libs = NumberOfLibs(sl2);
                    Console.WriteLine($"В коллекции {libs} библиотек");
                    break;
                }

                case 3:
                {
                    Console.WriteLine($"Сумма страховых фондов = {InshFondSum(sl2)} млн");
                    break;
                }

                case 4:
                {
                    foreach (Organization x in sl2)
                    {
                        x.VShow();
                        Console.WriteLine();
                    }
                    break;
                }

                case 5:
                {
                    AddElement(ref sl2);
                    break;
                }

                case 6:
                {
                    DeleteElement(ref sl2);
                    break;
                }

                default:
                {
                    Console.WriteLine("Операции с данным номером не существует. Введите другой номер");
                    break;
                }
                }
            } while (!stop);
            Console.WriteLine("Для продолжения нажмите Enter");
            Console.ReadLine();
            Console.Clear();
            #endregion

            #region demo 1 + 2

            SortedList slClone = (SortedList)sl.Clone();
            slClone.Add("zero", 0);
            Console.WriteLine("Поиск добавленного в клон коллекции элемента:");
            if (sl.ContainsValue(0))
            {
                Console.WriteLine("Элемент найден в оригинальной коллекции");
            }
            else
            {
                Console.WriteLine("Элемент не найден в оригинальной коллекции");
            }
            if (slClone.ContainsValue(0))
            {
                Console.WriteLine("Элемент найден в клоне коллекции");
            }
            else
            {
                Console.WriteLine("Элемент не найден в клоне коллекции");
            }
            Console.WriteLine();

            Plant extraplant             = new Plant();
            List <Organization> sl2Clone = new List <Organization>();
            foreach (Organization x in sl2)
            {
                Organization clone = (Organization)x.Clone();
                sl2Clone.Add(clone);
            }
            sl2Clone.Add(extraplant);
            Plant exPlantClone = (Plant)extraplant.Clone();
            Console.WriteLine("Поиск добавленного в клон коллекции элемента:");
            if (sl.ContainsValue(exPlantClone))
            {
                Console.WriteLine("Элемент найден в оригинальной коллекции");
            }
            else
            {
                Console.WriteLine("Элемент не найден в оригинальной коллекции");
            }
            if (slClone.ContainsValue(exPlantClone))
            {
                Console.WriteLine("Элемент найден в клоне коллекции");
            }
            else
            {
                Console.WriteLine("Элемент не найден в клоне коллекции");
            }

            Console.WriteLine("Для продолжения нажмите Enter");
            Console.ReadLine();

            #endregion

            #region demo3
            int             size = 100;
            TestCollections tc   = new TestCollections(size);
            Stopwatch       stw  = new Stopwatch();

            Organization[] arr       = tc.Link.ToArray();
            Organization   firstOrg  = (Organization)arr[0].Clone();
            Organization   middleOrg = (Organization)arr[size / 2].Clone();
            Organization   lastOrg   = (Organization)arr[size - 1].Clone();
            Organization   absOrg    = new Organization();

            Console.WriteLine("Queue<Organization>");
            stw.Start();
            if (tc.Link.Contains(firstOrg))
            {
                Console.WriteLine($"Первый элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Первый элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Restart();
            if (tc.Link.Contains(middleOrg))
            {
                Console.WriteLine($"Средний элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Средний элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Restart();
            if (tc.Link.Contains(lastOrg))
            {
                Console.WriteLine($"Последний элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Последний элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Restart();
            if (tc.Link.Contains(absOrg))
            {
                Console.WriteLine($"Элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Reset();
            Console.WriteLine();

            string[] arr1      = tc.Key.ToArray();
            string   firstStr  = (string)arr1[0].Clone();
            string   middleStr = (string)arr1[size / 2].Clone();
            string   lastStr   = (string)arr1[size - 1].Clone();
            string   absStr    = "???";

            Console.WriteLine("Queue<string>");
            stw.Start();
            if (tc.Key.Contains(firstStr))
            {
                Console.WriteLine($"Первый элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Первый элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Restart();
            if (tc.Key.Contains(middleStr))
            {
                Console.WriteLine($"Средний элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Средний элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Restart();
            if (tc.Key.Contains(lastStr))
            {
                Console.WriteLine($"Последний элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Последний элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Restart();
            if (tc.Key.Contains(absStr))
            {
                Console.WriteLine($"Элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Reset();
            Console.WriteLine();

            Console.WriteLine("SortedDictionary<Organization, Library> /// ContainsKey");
            stw.Start();
            if (tc.Coll1.ContainsKey(firstOrg))
            {
                Console.WriteLine($"Первый элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Первый элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Restart();
            if (tc.Coll1.ContainsKey(middleOrg))
            {
                Console.WriteLine($"Средний элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Средний элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Restart();
            if (tc.Coll1.ContainsKey(lastOrg))
            {
                Console.WriteLine($"Последний элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Последний элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Restart();
            if (tc.Coll1.ContainsKey(absOrg))
            {
                Console.WriteLine($"Элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Reset();
            Console.WriteLine();

            Library[] arr2 = new Library[size];
            tc.Coll1.Values.CopyTo(arr2, 0);
            Library firstLib  = (Library)arr2[0].Clone();
            Library middleLib = (Library)arr2[size / 2].Clone();
            Library lastLib   = (Library)arr2[size - 1].Clone();
            Library absLib    = new Library();

            Console.WriteLine("SortedDictionary<Organization, Library> /// ContainsValue");
            stw.Start();
            if (tc.Coll1.ContainsValue(firstLib))
            {
                Console.WriteLine($"Первый элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Первый элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Restart();
            if (tc.Coll1.ContainsValue(middleLib))
            {
                Console.WriteLine($"Средний элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Средний элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Restart();
            if (tc.Coll1.ContainsValue(lastLib))
            {
                Console.WriteLine($"Последний элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Последний элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Restart();
            if (tc.Coll1.ContainsValue(absLib))
            {
                Console.WriteLine($"Элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Reset();
            Console.WriteLine();


            Console.WriteLine("SortedDictionary<string, Library>");
            stw.Start();
            if (tc.Coll2.ContainsKey(firstStr))
            {
                Console.WriteLine($"Первый элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Первый элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Restart();
            if (tc.Coll2.ContainsKey(middleStr))
            {
                Console.WriteLine($"Средний элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Средний элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Restart();
            if (tc.Coll2.ContainsKey(lastStr))
            {
                Console.WriteLine($"Последний элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Последний элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Restart();
            if (tc.Coll2.ContainsKey(absStr))
            {
                Console.WriteLine($"Элемент найден, время поиска {stw.ElapsedTicks}");
            }
            else
            {
                Console.WriteLine($"Элемент не найден, время поиска {stw.ElapsedTicks}");
            }
            stw.Reset();

            #endregion

            Console.Readline();
        }
示例#2
0
        public static void MenuStack(TestCollections collections, Stack <Test> StackTest, Stack <string> StackString, Dictionary <string, Test> DictString, Dictionary <Test, Test> DictTest)
        {
            int choice = -1;

            while (choice != 5)
            {
                Console.WriteLine("1. Добавить элемент");
                Console.WriteLine("2. Удалить элемент");
                Console.WriteLine("3. Печать");
                Console.WriteLine("4. Измерение времени поиска");
                Console.WriteLine("5. Назад");
                bool ok = int.TryParse(Console.ReadLine(), out choice);
                if (!ok)
                {
                    do
                    {
                        Console.WriteLine("Проверьте правильность ввода");
                        ok = int.TryParse(Console.ReadLine(), out choice);
                    } while (!ok || choice < 1 || choice > 5);
                }
                switch (choice)
                {
                case 1:
                    Console.WriteLine("Введите ключ");
                    string key = Console.ReadLine();
                    if (StackString.Contains(key))
                    {
                        Console.WriteLine("Данный ключ уже существует. Попробуйте ещё раз");
                        key = Console.ReadLine();
                    }
                    while (StackString.Contains(key))
                    {
                        ;
                    }
                    Random r   = new Random();
                    int    d   = r.Next(1, 30);
                    int    mo  = r.Next(1, 12);
                    int    ma  = r.Next(1, 10);
                    int    n   = r.Next(1, 100);
                    int    d1  = r.Next(1, 30);
                    int    mo1 = r.Next(1, 12);
                    int    ma1 = r.Next(1, 10);
                    int    n1  = r.Next(1, 100);
                    collections.AddElement(key, new Test(d1, mo1, ma1, n1), new Test(d, mo, ma, n), StackString, StackTest, DictTest, DictString);
                    break;

                case 2:
                    collections.DeleteElement(StackString, StackTest, DictString, DictTest);
                    break;

                case 3:
                    collections.Print(StackTest, DictString);
                    break;

                case 4:
                    collections.Time(StackString, StackTest, DictTest, DictString);
                    break;

                case 5:
                    Console.Clear();
                    choice = 5;
                    break;
                }
            }
        }
示例#3
0
        public static void ThirdTask()
        {
            const int       size       = 10;
            TestCollections collection = new TestCollections(size);

            Console.WriteLine("listPeople: ");
            PrintList(collection.listPeople);
            Console.WriteLine("");
            Console.WriteLine("listString: ");
            PrintList(collection.listString);
            Console.WriteLine("");
            Console.WriteLine("dictPeople: ");
            PrintDict(collection.dictPeople);
            Console.WriteLine("");
            Console.WriteLine("dictString: ");
            PrintDict(collection.dictString);
            Console.WriteLine("");
            Console.WriteLine("--------------------------------");
            // Добавление элемента
            Console.WriteLine("Добавление элемента");
            Console.WriteLine("");
            Employee Employee = new Employee(collection.GetRandomName(), collection.GetRandomNum());

            collection.Add(Employee);
            Console.WriteLine("--------------------------------");

            // Печать listPeople
            Console.WriteLine("listPeople:");
            PrintList(collection.listPeople);
            Console.WriteLine("");
            // Печать listString
            Console.WriteLine("listString:");
            PrintList(collection.listString);
            Console.WriteLine("");
            // Печать dictPeople
            Console.WriteLine("dictPeople:");
            PrintDict(collection.dictPeople);
            Console.WriteLine("");
            // Печать dictString
            Console.WriteLine("dictString:");
            PrintDict(collection.dictString);
            Console.WriteLine("");
            Console.WriteLine("--------------------------------");
            // Удаление элемента
            Console.WriteLine("Удаление элемента");
            Console.WriteLine("");
            collection.Remove();
            Console.WriteLine("--------------------------------");

            // Печать listPeople
            Console.WriteLine("listPeople:");
            PrintList(collection.listPeople);
            Console.WriteLine("");
            // Печать listString
            Console.WriteLine("listString:");
            PrintList(collection.listString);
            Console.WriteLine("");
            // Печать dictPeople
            Console.WriteLine("dictPeople:");
            PrintDict(collection.dictPeople);
            Console.WriteLine("");
            // Печать dictString
            Console.WriteLine("dictString:");
            PrintDict(collection.dictString);
            Console.WriteLine("");
            Console.WriteLine("-------------------------------");


            Stopwatch stopWatch = new Stopwatch();

            //Поиск среди коллекций <Tkey>
            Console.WriteLine("Поиск среди коллекций <TKey>\n");
            Console.Write("Время поиска первого объекта в коллекции List<TKey>: ");
            stopWatch.Start();
            if (collection.listPeople.Contains(collection.firstObject.BasePerson))
            {
                stopWatch.Stop();
                Console.WriteLine("Найден; " + stopWatch.ElapsedTicks);
            }
            else
            {
                stopWatch.Stop();
                Console.WriteLine("НЕ найден; " + stopWatch.ElapsedTicks);
            }


            Console.Write("Время поиска первого объекта в коллекции Dictionary<TKey, TValue>: ");
            stopWatch.Restart();
            if (collection.dictPeople.ContainsKey(collection.firstObject.BasePerson))
            {
                stopWatch.Stop();
                Console.WriteLine("Найден; " + stopWatch.ElapsedTicks);
            }
            else
            {
                stopWatch.Stop();
                Console.WriteLine("НЕ найден; " + stopWatch.ElapsedTicks);
            }

            Console.Write("TValue Время поиска первого объекта в коллекции Dictionary<TKey, TValue>: ");
            stopWatch.Restart();
            if (collection.dictPeople.ContainsValue(collection.firstObject))
            {
                stopWatch.Stop();
                Console.WriteLine("Найден; " + stopWatch.ElapsedTicks);
            }
            else
            {
                stopWatch.Stop();
                Console.WriteLine("НЕ найден; " + stopWatch.ElapsedTicks);
            }

            Console.Write("Время поиска среднего объекта в коллекции List<TKey>: ");
            stopWatch.Restart();
            if (collection.listPeople.Contains(collection.middleObject.BasePerson))
            {
                stopWatch.Stop();
                Console.WriteLine("Найден; " + stopWatch.ElapsedTicks);
            }
            else
            {
                stopWatch.Stop();
                Console.WriteLine("НЕ найден; " + stopWatch.ElapsedTicks);
            }


            Console.Write("Время поиска среднего объекта в коллекции Dictionary<TKey, TValue>: ");
            stopWatch.Restart();
            if (collection.dictPeople.ContainsKey(collection.middleObject.BasePerson))
            {
                stopWatch.Stop();
                Console.WriteLine("Найден; " + stopWatch.ElapsedTicks);
            }
            else
            {
                stopWatch.Stop();
                Console.WriteLine("НЕ найден; " + stopWatch.ElapsedTicks);
            }
            collection.dictPeople.ContainsValue(collection.middleObject);

            Console.Write("TValue Время поиска среднего объекта в коллекции Dictionary<TKey, TValue>: ");
            stopWatch.Restart();
            if (collection.dictPeople.ContainsValue(collection.middleObject))
            {
                stopWatch.Stop();
                Console.WriteLine("Найден; " + stopWatch.ElapsedTicks);
            }
            else
            {
                stopWatch.Stop();
                Console.WriteLine("НЕ найден; " + stopWatch.ElapsedTicks);
            }

            Console.Write("Время поиска последнего объекта в коллекции List<TKey>: ");
            stopWatch.Restart();
            if (collection.listPeople.Contains(collection.lastObject.BasePerson))
            {
                stopWatch.Stop();
                Console.WriteLine("Найден; " + stopWatch.ElapsedTicks);
            }
            else
            {
                stopWatch.Stop();
                Console.WriteLine("НЕ найден; " + stopWatch.ElapsedTicks);
            }


            Console.Write("Время поиска последнего объекта в коллекции Dictionary<TKey, TValue>: ");
            stopWatch.Restart();
            if (collection.dictPeople.ContainsKey(collection.lastObject.BasePerson))
            {
                stopWatch.Stop();
                Console.WriteLine("Найден; " + stopWatch.ElapsedTicks);
            }
            else
            {
                stopWatch.Stop();
                Console.WriteLine("НЕ найден; " + stopWatch.ElapsedTicks);
            }

            Console.Write("TValue Время поиска последнего объекта в коллекции Dictionary<TKey, TValue>: ");
            stopWatch.Restart();
            if (collection.dictPeople.ContainsValue(collection.lastObject))
            {
                stopWatch.Stop();
                Console.WriteLine("Найден; " + stopWatch.ElapsedTicks);
            }
            else
            {
                stopWatch.Stop();
                Console.WriteLine("НЕ найден; " + stopWatch.ElapsedTicks);
            }
            //
            //
            //
            //
            //
            //
            //Поиск среди коллекций <string>
            Console.WriteLine("\nПоиск среди коллекций <string>\n");
            Console.Write("Время поиска первого объекта в коллекции List<string>: ");
            stopWatch.Start();
            if (collection.listString.Contains(collection.firstObject.BasePerson.ToString()))
            {
                stopWatch.Stop();
                Console.WriteLine("Найден; " + stopWatch.ElapsedTicks);
            }
            else
            {
                stopWatch.Stop();
                Console.WriteLine("НЕ найден; " + stopWatch.ElapsedTicks);
            }


            Console.Write("Время поиска первого объекта в коллекции Dictionary<string, TValue>: ");
            stopWatch.Restart();
            if (collection.dictString.ContainsKey(collection.firstObject.BasePerson.GetHashCode().ToString()))
            {
                stopWatch.Stop();
                Console.WriteLine("Найден; " + stopWatch.ElapsedTicks);
            }
            else
            {
                stopWatch.Stop();
                Console.WriteLine("НЕ найден; " + stopWatch.ElapsedTicks);
            }

            Console.Write("Время поиска среднего объекта в коллекции List<string>: ");
            stopWatch.Restart();
            if (collection.listString.Contains(collection.middleObject.BasePerson.ToString()))
            {
                stopWatch.Stop();
                Console.WriteLine("Найден; " + stopWatch.ElapsedTicks);
            }
            else
            {
                stopWatch.Stop();
                Console.WriteLine("НЕ найден; " + stopWatch.ElapsedTicks);
            }


            Console.Write("Время поиска среднего объекта в коллекции Dictionary<string, TValue>: ");
            stopWatch.Restart();
            if (collection.dictString.ContainsKey(collection.middleObject.BasePerson.GetHashCode().ToString()))
            {
                stopWatch.Stop();
                Console.WriteLine("Найден; " + stopWatch.ElapsedTicks);
            }
            else
            {
                stopWatch.Stop();
                Console.WriteLine("НЕ найден; " + stopWatch.ElapsedTicks);
            }

            Console.Write("Время поиска последнего объекта в коллекции List<string>: ");
            stopWatch.Restart();
            if (collection.listString.Contains(collection.lastObject.BasePerson.ToString()))
            {
                stopWatch.Stop();
                Console.WriteLine("Найден; " + stopWatch.ElapsedTicks);
            }
            else
            {
                stopWatch.Stop();
                Console.WriteLine("НЕ найден; " + stopWatch.ElapsedTicks);
            }


            Console.Write("Время поиска последнего объекта в коллекции Dictionary<string, TValue>: ");
            stopWatch.Restart();
            if (collection.dictString.ContainsKey(collection.lastObject.BasePerson.GetHashCode().ToString()))
            {
                stopWatch.Stop();
                Console.WriteLine("Найден; " + stopWatch.ElapsedTicks);
            }
            else
            {
                stopWatch.Stop();
                Console.WriteLine("НЕ найден; " + stopWatch.ElapsedTicks);
            }

            Console.WriteLine("-------------------------------");



            Console.WriteLine("-------------------------------");
        }
示例#4
0
        static void Task3()
        {
            int             length         = ReadInt(3, 1000, "=== Введите размер коллекции ===");
            TestCollections testCollection = new TestCollections(length);

            testCollection = testCollection.CreateRand();
            int       userChoice = 1;
            Stopwatch watch      = new Stopwatch();

            do
            {
                ThirdMenu();

                userChoice = ReadInt(0, 7, "=== Выберите действие ===");

                switch (userChoice)
                {
                case 1:      // Вывод

                    testCollection.Show();
                    break;

                case 2:      // Добавление объекта

                    InsuranceCompany i = new InsuranceCompany();
                    i.Input();

                    testCollection.OrganizationQueue.Enqueue(i.BaseOrganization);
                    testCollection.StringQueue.Enqueue(i.BaseOrganization.ToString());
                    testCollection.OrganizationSDictionary.Add(i.BaseOrganization, i);
                    testCollection.StringSDictionary.Add(i.BaseOrganization.ToString(), i);
                    Console.WriteLine("=== Запись добавлена ===");

                    break;

                case 3:      // Удаление объекта

                    if (testCollection.Length == 0)
                    {
                        Console.WriteLine("=== Коллекция пустая ===");
                    }
                    else
                    {
                        Organization p = new Organization();
                        p = testCollection.OrganizationQueue.Peek();
                        testCollection.OrganizationQueue.Dequeue();
                        testCollection.StringQueue.Dequeue();
                        testCollection.OrganizationSDictionary.Remove(p);
                        testCollection.StringSDictionary.Remove(p.Name);
                        Console.WriteLine("=== Первый элемент в очереди удален ===");
                    }
                    break;

                case 4:      // Сравнение скорости поиска первого элемента
                    string           key     = testCollection.CollectionStringFirst;
                    InsuranceCompany insComp = (InsuranceCompany)testCollection.CollectionFirst.Value.Clone();
                    Console.WriteLine("=== Сравнение скорости поиска первого элемента ===");

                    watch.Start();
                    bool result = testCollection.OrganizationQueue.Contains(insComp);
                    watch.Stop();
                    TimeSpan time = watch.Elapsed;
                    ShowTime("Queue<Organization>, метод Contains", result, time);

                    watch.Restart();
                    result = testCollection.StringQueue.Contains(key);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("Queue<string>, метод Contains", result, time);

                    watch.Restart();
                    result = testCollection.OrganizationSDictionary.ContainsKey(insComp.BaseOrganization);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("SortedDictionary<Organization, InsuranceCompany>, метод ContainsKey", result, time);

                    watch.Restart();
                    result = testCollection.StringSDictionary.ContainsKey(key);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("SortedDictionary<string, InsuranceCompany>, метод ContainsKey", result, time);

                    watch.Restart();
                    result = testCollection.OrganizationSDictionary.ContainsValue(insComp);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("SortedDictionary<Organization, InsuranceCompany>, метод ContainsValue", result, time);

                    break;

                case 5:      // Сравнение скорости поиска последнего элемента

                    key     = testCollection.StringQueue.Peek();
                    insComp = (InsuranceCompany)testCollection.StringSDictionary[key].Clone();

                    Console.WriteLine("=== Сравнение скорости поиска последнего элемента ===");

                    watch.Start();
                    result = testCollection.OrganizationQueue.Contains(insComp);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("Queue<Organization>, метод Contains", result, time);

                    watch.Restart();
                    result = testCollection.StringQueue.Contains(key);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("Queue<string>, метод Contains", result, time);

                    watch.Restart();
                    result = testCollection.OrganizationSDictionary.ContainsKey(insComp.BaseOrganization);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("SortedDictionary<Organization, InsuranceCompany>, метод ContainsKey", result, time);

                    watch.Restart();
                    result = testCollection.StringSDictionary.ContainsKey(key);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("SortedDictionary<string, InsuranceCompany>, метод ContainsKey", result, time);

                    watch.Restart();
                    result = testCollection.OrganizationSDictionary.ContainsValue(insComp);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("SortedDictionary<Organization, InsuranceCompany>, метод ContainsValue", result, time);

                    break;

                case 6:      // Сравнение скорости поиска центрального элемента

                    key     = testCollection.CollectionStringMiddle;
                    insComp = (InsuranceCompany)testCollection.CollectionMiddle.Value.Clone();

                    Console.WriteLine("=== Сравнение скорости поиска центрального элемента ===");

                    watch.Start();
                    result = testCollection.OrganizationQueue.Contains(insComp);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("Queue<Organization>, метод Contains", result, time);

                    watch.Restart();
                    result = testCollection.StringQueue.Contains(key);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("Queue<string>, метод Contains", result, time);

                    watch.Restart();
                    result = testCollection.OrganizationSDictionary.ContainsKey(insComp.BaseOrganization);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("SortedDictionary<Organization, InsuranceCompany>, метод ContainsKey", result, time);

                    watch.Restart();
                    result = testCollection.StringSDictionary.ContainsKey(key);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("SortedDictionary<string, InsuranceCompany>, метод ContainsKey", result, time);

                    watch.Restart();
                    result = testCollection.OrganizationSDictionary.ContainsValue(insComp);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("SortedDictionary<Organization, InsuranceCompany>, метод ContainsValue", result, time);

                    break;

                case 7:      // Сравнение скорости поиска несуществующего элемента

                    insComp = new InsuranceCompany("Не существует", "Нет города", 0, 0, "Нет региона");
                    key     = "Не существует";
                    Console.WriteLine("=== Сравнение скорости поиска несуществующего элемента ===");

                    watch.Start();
                    result = testCollection.OrganizationQueue.Contains(insComp);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("Queue<Organization>, метод Contains", result, time);

                    watch.Restart();
                    result = testCollection.StringQueue.Contains(key);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("Queue<string>, метод Contains", result, time);

                    watch.Restart();
                    result = testCollection.OrganizationSDictionary.ContainsKey(insComp.BaseOrganization);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("SortedDictionary<Organization, InsuranceCompany>, метод ContainsKey", result, time);

                    watch.Restart();
                    result = testCollection.StringSDictionary.ContainsKey(key);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("SortedDictionary<string, InsuranceCompany>, метод ContainsKey", result, time);

                    watch.Restart();
                    result = testCollection.OrganizationSDictionary.ContainsValue(insComp);
                    watch.Stop();
                    time = watch.Elapsed;
                    ShowTime("SortedDictionary<Organization, InsuranceCompany>, метод ContainsValue", result, time);

                    break;
                }
            } while (userChoice != 0);
        }