Выполнять операции набора в C#
Класс HashSet может представлять объекты в наборе и выполнять операции с множеством, такие как поиск объединения или пересечения двух множеств.
Когда программа запускается, следующий код строит два набора и выполняет с ними некоторые операции.
// Создаем несколько наборов и выполняем на них операции. private void Form1_Load(object sender, EventArgs e) { HashSetowns_a_car = new HashSet (); HashSet owns_a_bike = new HashSet (); owns_a_bike.Add("Alice"); owns_a_bike.Add("Bob"); owns_a_bike.Add("Fred"); owns_a_bike.Add("Dan"); owns_a_car.Add("Cindy"); owns_a_car.Add("Dan"); owns_a_car.Add("Emma"); owns_a_car.Add("Bob"); owns_a_car.Add("Fred"); txtOwnsABike.Text = string.Join(", ", owns_a_bike.ToArray()); txtOwnsACar.Text = string.Join(", ", owns_a_car.ToArray()); // Пересечение. HashSet owns_both = new HashSet (owns_a_car); owns_both.IntersectWith(owns_a_bike); txtOwnsBoth.Text = string.Join(", ", owns_both.ToArray()); // Союз. HashSet owns_either = new HashSet (owns_a_car); owns_either.UnionWith(owns_a_bike); txtOwnsEither.Text = string.Join(", ", owns_either.ToArray()); // Xor. HashSet owns_one = new HashSet (owns_a_car); owns_one.SymmetricExceptWith(owns_a_bike); txtOwnsOne.Text = string.Join(", ", owns_one.ToArray()); }
Код создает два набора с именем owns_a_car и owns_a_bike и отображает их.
Затем программа создает копию owns_a_car, использует метод IntersectWith для поиска пересечения двух наборов и отображает результат (люди, которые владеют как автомобилями, так и велосипеды).
Программа создает другую копию owns_a_car, использует ее метод UnionWith, чтобы найти объединение двух наборов и отображает результат (люди, которые владеют либо автомобилями, либо велосипедами или оба).
Наконец, программа создает третью копию owns_a_car, использует метод SymmetricExceptWith для поиска элементов в одном наборе или другом, но не в обоих (Xor-I do not знаете, почему они не просто назвали этот метод Xor), и отображает результат (люди, которые владеют велосипедом или автомобилем, но не оба).