private void AddInCollections(StudentFromAbstract student)
 {
     listStudents.Add(student);
     listString.Add(student.ToString());
     dictPerson.Add(student.BasePerson, student);
     dictString.Add(student.ToString(), student);
 }
        public void DeleteElem()
        {
            if (listString.Count == 0)
            {
                Console.WriteLine("Коллекции пусты!");
                return;
            }

            GetStudentInfo(out string name, out int age, out string gender, out int course, out double avgGrades);
            var student = new StudentFromAbstract(name, age, gender, course, avgGrades);

            if (!listString.Contains(student.ToString()))
            {
                Console.WriteLine("Элемент не найден!");
                return;
            }
            else
            {
                student = dictString[student.ToString()];
            }

            listStudents.Remove(student);
            listString.Remove(student.ToString());
            dictPerson.Remove(student.BasePerson);
            dictString.Remove(student.ToString());
        }
        public TestCollections()
        {
            int    size = 1000;
            Random r    = new Random(DateTime.Now.Millisecond);

            for (int i = 0; i < size; i++)
            {
                var student = new StudentFromAbstract(GenerateName(), r.Next(10, 100), GenerateGender(), r.Next(1, 7), r.NextDouble() * 5);

                AddInCollections(student);
            }
        }
        public void FindElems()
        {
            var firstElem  = dictPerson[dictPerson.Keys.ToArray()[0]];
            var middleElem = listStudents[500];
            var lastElem   = listStudents[999];
            var newElem    = new StudentFromAbstract("George", 10, "male", 1, 2);

            FindItem(firstElem, "Поиск первого элемента: ");
            FindItem(middleElem, "Поиск среднего элемента: ");
            FindItem(lastElem, "Поиск последнего элемента: ");
            FindItem(newElem, "Поиск не входящего в коллекцию элемента: ");
        }
        private void FindItem(StudentFromAbstract student, string message)
        {
            var watch     = new Stopwatch();
            var foundItem = new StudentFromAbstract();

            Console.WriteLine(message + student.ToString());

            Console.WriteLine("Поиск в первой коллекции (List<StudentFromAbstract>):");
            watch.Start();
            if (listStudents.Contains(student))
            {
                foundItem = new StudentFromAbstract(student.Name, student.Age, student.Gender, student.Course, student.AverageGrades);
                watch.Stop();
                Console.WriteLine("Элемент найден!");
            }
            else
            {
                watch.Stop();
                Console.WriteLine("Элемент не найден!");
            }
            Console.WriteLine("Время поиска:" + watch.ElapsedTicks);
            Console.WriteLine();
            watch.Reset();

            Console.WriteLine("Поиск во второй коллекции (List<string>):");
            watch.Start();
            if (listString.Contains(student.ToString()))
            {
                foundItem = new StudentFromAbstract(student.Name, student.Age, student.Gender, student.Course, student.AverageGrades);
                watch.Stop();
                Console.WriteLine("Элемент найден!");
            }
            else
            {
                watch.Stop();
                Console.WriteLine("Элемент не найден!");
            }
            Console.WriteLine("Время поиска:" + watch.ElapsedTicks);
            Console.WriteLine();
            watch.Reset();

            Console.WriteLine("Поиск в третьей коллекции (по ключу) (Dictionary<PersonAbstract, StudentFromAbstract>):");
            watch.Start();
            if (dictPerson.ContainsKey(student.BasePerson))
            {
                foundItem = new StudentFromAbstract(student.Name, student.Age, student.Gender, student.Course, student.AverageGrades);
                watch.Stop();
                Console.WriteLine("Элемент найден!");
            }
            else
            {
                watch.Stop();
                Console.WriteLine("Элемент не найден!");
            }
            Console.WriteLine("Время поиска:" + watch.ElapsedTicks);
            Console.WriteLine();
            watch.Reset();

            Console.WriteLine("Поиск в третьей коллекции (по значению) (Dictionary<PersonAbstract, StudentFromAbstract>):");
            watch.Start();
            if (dictPerson.ContainsValue(student))
            {
                foundItem = new StudentFromAbstract(student.Name, student.Age, student.Gender, student.Course, student.AverageGrades);
                watch.Stop();
                Console.WriteLine("Элемент найден!");
            }
            else
            {
                watch.Stop();
                Console.WriteLine("Элемент не найден!");
            }
            Console.WriteLine("Время поиска:" + watch.ElapsedTicks);
            Console.WriteLine();
            watch.Reset();

            Console.WriteLine("Поиск в четвертой коллекции (Dictionary<string, StudentFromAbstract>):");
            watch.Start();
            if (dictString.ContainsKey(student.ToString()))
            {
                foundItem = new StudentFromAbstract(student.Name, student.Age, student.Gender, student.Course, student.AverageGrades);
                watch.Stop();
                Console.WriteLine("Элемент найден!");
            }
            else
            {
                watch.Stop();
                Console.WriteLine("Элемент не найден!");
            }
            Console.WriteLine("Время поиска:" + watch.ElapsedTicks);
            Console.WriteLine();
            watch.Reset();
        }