
Лабораторна робота № 7 Універсальні класи-колекції c#
Хеш-таблиці
1. Мета роботи: вивчення методів роботи з універсальними колекціями
17.1. Клас SortedList<TKey,TValue> - відсортований список
17.2. Клас Dictionary<TKey,TValue> - словник
17.3. Клас SortedDictionary<TKey,TValue> - відсортований словник
Методичні рекомендації до виконання лабораторної роботи
1. Уважно прочитайте лекцію 8 та цю лабораторну роботу.
2. Виконайте і проаналізуйте всі наведені в лекції приклади.
Приклад.
Створити колекцію SortedList об’єктів класу Student. Заповнити колекцію даними з текстового файлу. Додати ще 2 елементи. Вивести на консоль. Перевірити, чи є елемент з ключем 4. Якщо є, видалити його з колекції.
Клас Student. В класі 3 конструктори.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Lab9_SortedList
{
class Student
{
//Властивості
public int Id {get; set;}
public string FistName { get; set; } //ім'я
public string LastName { get; set; } //прізвище
public string Role { get; set; } // роль
public int Course { get; set; }
public int Rating { get; set; }
public Student(int Id, string f, string n, int cource, int rating, string r)
{
//конструктор для ініціалізації об’єктів в коді
this.Id=Id;
FistName=f;
LastName=n;
Role=r;
Course=cource;
Rating=rating;
}
public Student(string s)
{
//конструктор для ініціалізації об’єктів з файлу
string[] split = s.Split(new Char[] { '*' });
Id = int.Parse(split[0].Trim());
FistName = split[1].Trim();
LastName = split[2].Trim();
Course = int.Parse(split[3].Trim());
Rating = int.Parse(split[4].Trim());
Role = split[5].Trim();
}
public Student()
{
//конструктор тільки для створення колекції
}
public string GetRole(int course)
{
if (course <= 4)
Role = "бакалавр";
else
Role = "магістр";
return Role;
}
public void St_Rating(int student_rating)
{
if (student_rating >= 82)
Console.WriteLine("Привіт відмінникам");
else
if (student_rating <= 45)
Console.WriteLine("Перездача! Треба краще вчитися!");
else
Console.WriteLine("Можна вчитися ще краще!");
}
}
}
Код програми
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace Lab9_SortedList
{
class Program
{
static void Main(string[] args)
{
SortedList<int, Student> List_SI_51 = new SortedList<int, Student>();
string s;
int Id;
string[] split;
StreamReader f = new StreamReader("TextListStudents.txt");
while ((s = f.ReadLine()) != null)
{
split = s.Split(new Char[] { '*' }); // розбивка на слова
Id = int.Parse(split[0].Trim()); //виділення ключа
List_SI_51.Add(Id, new Student(s)); //заповнення колекції
}
f.Close();
//додаємо 2 елементи
List_SI_51.Add(3, new Student(3, "Д’яченко", "Валерій",2,76, "бакалавр"));
List_SI_51.Add(4, new Student(4, "Ніколаєв", "Андрій", 2, 65, "бакалавр"));
foreach (KeyValuePair<int, Student> kvp in List_SI_51)
{
Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value.FistName);
}
if (List_SI_51.ContainsKey(4)) // перевірка чи є в колекції елемент з ключем 4
List_SI_51.Remove(4); //якщо є - видаляємо його
Console.WriteLine("Після видалення елемента з ключем 4");
foreach (KeyValuePair<int, Student> kvp in List_SI_51)
{
Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value.FistName);
}
Console.ReadKey();
}
}
}
Текстовий файл TextListStudents.txt
1*Базяк *Валентин*2*65*бакалавр*
2*Кириченко *Станіслав*2*60*Бакалавр*