Похожие презентации:
Операции с множествами в C# Классы HashSet и SortedSet
1.
Операции с множествами в C#Классы HashSet и SortedSet
Мелешкина Е.В.
2.
МножествоМножество (Set) – это совокупность
однотипных объектов, рассматриваемая как
одно целое
Коллекция, содержащая только отличающиеся
элементы, называется множеством.
3.
МножествоДля работы с множествами в библиотеке классов
.NET Framework имеется целых два обобщённых
класса HashSet<T> и SortedSet<T>, которые
находятся в пространстве имён
System.Collections.Generic.
Различие между ними в том, что SortedSet<T>
представляет упорядоченное множество.
4.
Операции над множествами5.
Операции над множествами• Add — добавление элемента. Если такой элемент
уже присутствует, то он не будет добавлен.
• Remove — удаление элемента из множества.
• Union — объединение множеств. Создается новое
множество, включающее в себя все элементы из
множества А и множества В. Если элемент
содержится в обоих множествах, он будет
добавлен однократно.
6.
Операции над множествами• Difference — разность множеств. Создается новое
множество, включающее в себя все элементы
множества А, которые не входят в множество В.
• Intersection — пересечение множеств. Создается
новое множество, включающее в себя все
элементы входящие одновременно и в множество
А, и в множество В.
• Subset — проверка на подмножество. Чтобы быть
подмножеством, все элементы множества А
должны содержаться в множестве В. Тогда
множество А является подмножеством множества
В.
7.
Разность множествС помощью метода Except можно получить разность двух
множеств:
string[] soft = { "Microsoft", "Google", "Apple"};
string[] hard = { "Apple", "IBM", "Samsung"};
// разность множеств
var result = soft.Except(hard);
foreach (string s in result)
Console.WriteLine(s);
В данном случае из массива soft убираются все элементы, которые
есть в массиве hard. Результатом операции будут два элемента:
• Microsoft
8.
Пересечение множествДля получения пересечения множеств, то есть общих для
обоих наборов элементов, применяется метод:
string[] soft = { "Microsoft", "Google", "Apple"};
string[] hard = { "Apple", "IBM", "Samsung"};
// пересечение множеств
var result = soft.Intersect(hard);
foreach (string s in result)
Console.WriteLine(s);
Так как оба набора имеют только один общий элемент, то
соответственно только он и попадет в результирующую
выборку:
• Apple
9.
Объединение множествДля объединения двух множеств используется метод Union. Его
результатом является новый набор, в котором имеются элементы,
как из одного, так и из второго множества. Повторяющиеся
элементы добавляются в результат только один раз:
string[] soft = { "Microsoft", "Google", "Apple"};
string[] hard = { "Apple", "IBM", "Samsung"};
// объединение множеств
var result = soft.Union(hard);
foreach (string s in result)
Console.WriteLine(s);
10.
Объединение множествРезультатом операции будет следующий набор:
Microsoft
Apple
IBM
Samsung
Если же нам нужно простое объединение двух наборов, то мы
можем использовать метод Concat:
var result = soft.Concat(hard);
Те элементы, которые встречаются в обоих наборах, дублируются.
11.
Удаление дубликатовДля удаления дублей в наборе используется
метод Distinct:
var result = soft.Concat(hard).Distinct();
Последовательное применение методов
Concat и Distinct будет подобно действию
метода Union.
12.
Метод AggregateМетод Aggregate выполняет общую агрегацию элементов
коллекции в зависимости от указанного выражения.
Например:
int[] numbers = { 1, 2, 3, 4, 5};
int query = numbers.Aggregate((x,y)=> x - y);
Переменная query будет представлять результат агрегации
массива. В качестве условия агрегации используется
выражение (x,y)=> x - y, то есть вначале из первого элемента
вычитается второй, потом из получившегося значения
вычитается третий и так далее. То есть будет эквивалентно
выражению:
int query = 1 - 2 - 3 - 4 – 5
В итоге мы получим число -13. Соответственно мы бы могли
использовать любые другие операции, например, сложение:
int query = numbers.Aggregate((x,y)=> x + y); // аналогично 1 + 2 + 3
+4+5
13.
Метод CountПолучение размера выборки
Для получения числа элементов в выборке
используется метод Count():
int[] numbers = { 1, 2, 3, 4, 10, 34, 55, 66, 77, 88 };
int size = numbers.Count(i => i % 2 == 0 && i > 10);
Console.WriteLine(size);
14.
Получение суммыДля получения суммы значений применяется метод Sum:
int[] numbers = { 1, 2, 3, 4, 10, 34, 55, 66, 77, 88 };
List<User> users = new List<User>()
{
new User { Name = "Tom", Age = 23 },
new User { Name = "Sam", Age = 43 },
new User { Name = "Bill", Age = 35 }
};
int sum1 = numbers.Sum();
decimal sum2 = users.Sum(n => n.Age);
Метод Sum() имеет ряд перегрузок. В частности, если у нас
набор сложных объектов, как в примере выше, то мы можем
указать свойство, значения которого будут
суммироваться: users.Sum(n => n.Age)
15.
Максимальное, минимальное и среднее значенияДля нахождения минимального значения применяется
метод Min(), для получения максимального - метод Max(), а для
нахождения среднего значения - метод Average(). Их действие
похоже на методы Sum и Count:
int[] numbers = { 1, 2, 3, 4, 10, 34, 55, 66, 77, 88 };
List<User> users = new List<User>()
{
new User { Name = "Tom", Age = 23 },
new User { Name = "Sam", Age = 43 },
new User { Name = "Bill", Age = 35 }
};
int min1 = numbers.Min();
int min2 = users.Min(n => n.Age); // минимальный возраст
int max1 = numbers.Max();
int max2 = users.Max(n => n.Age); // максимальный возраст
double avr1 = numbers.Average();
double avr2 = users.Average(n => n.Age); //средний возраст
16.
Даны три множества Х1, Х2, Х3, содержащие целые числа издиапазона 0..10. Известно, что мощность каждого из этих
множеств равна 10. Сформировать новое множество Y=(Х1 U
Х2) (Х2\ Х3). На экран вывести исходные и полученное
множества. Значения элементов исходных множеств ввести с
клавиатуры.
Задание 1
17.
Подсчитать в строке количество слогов:Пример 1
18.
Подсчитать в строке количество слогов:Пример 2
19.
Задан некоторый набор товаров. Определить для каждого изтоваров, какие из них имеются только в одном из 4
магазинов, в каком и каких товаров нет ни в одном магазине.
Список товаров и списки товаров в каждом магазине
придумать самостоятельно.
Задание 2
20.
Напечатать в возрастающем порядке все цифры, невходящие в запись данного натурального числа.
Задание 3
21.
Задано некоторое множество М и множество T того же типа.Подсчитать, сколько элементов из множеств T и M совпадает.
Задание 4
Программирование