SortedSet<T> содержит неповторяющюся коллекцию элементов.
SortedSet<T> содержит элементы неупорядоченно (без сортировки).
SortedSet<T> позволяет быстро определить, есть такой элемент или нет (быстро потому что, использует индекс, который вычисляется из хэш-кода элемента).
SortedSet<T> - имеет методы
Add,
Remove,
Contains, но поскольку он использует хэш-реализацию, эти операции занимают 1 действие (методы
Contains и
Remove в
List<T> занимает n-действий.)
SortedSet<T> имеет методы:
UnionWith (
объединение элементов с другим SortedSet<T>)
IntersectWith (
пересечение элементов с другим SortedSet<T>)
ExceptWith (
разность элементов с другим SortedSet<T>)
SymmetricExceptWith (
симетрическая разность элементов с другим SortedSet<T>)
SortedSet<T> относится к
типизированной коллекции... то есть все элементы одного типа.
C#
Создаем новое C# консольное приложение... и напишем код
using System;
using System.Collections.Generic; // подключаем SortedSet<T>
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// создаем SortedSet
SortedSet<string> mySortedSet = new SortedSet<string>();
// добавляем элементы
mySortedSet.Add("a");
mySortedSet.Add("c");
mySortedSet.Add("b");
// Перебираем все элементы с помощью foreach и выводим на экран
foreach (string value in mySortedSet)
Console.WriteLine(value);
// на экране увидим "a"
// на экране увидим "b"
// на экране увидим "c"
// узнать есть ли такой элемент?
bool isFound = mySortedSet.Contains("a");
// isFound = true
// удаляем элемент
mySortedSet.Remove("a");
// в mySortedSet элементы: "b", "c"
// удаляем элементы "b" и "c"
mySortedSet.RemoveWhere(item => item == "b" || item == "c");
// в mySortedSet пусто
// Метод ExceptWith (Разность)
SortedSet<string> sortedSet1 = new SortedSet<string>() { "a", "b", "c" };
SortedSet<string> sortedSet2 = new SortedSet<string>() { "a", "e", "h" };
sortedSet1.ExceptWith(sortedSet2);
// (ПОМЕНЯЛИСЬ) в sortedSet1 элементы: "b", "c"
// в sortedSet2 элементы: "a", "e", "h"
// Метод SymmetricExceptWith (Симетрическая разность)
sortedSet1 = new SortedSet<string>() { "a", "b", "c" };
sortedSet2 = new SortedSet<string>() { "a", "e", "h" };
sortedSet1.SymmetricExceptWith(sortedSet2);
// (ПОМЕНЯЛИСЬ) в sortedSet1 элементы: "b", "c", "e", "h",
// в sortedSet2 элементы: "a", "e", "h"
// Метод UnionWith (Объединение)
sortedSet1 = new SortedSet<string>() { "a", "b", "c" };
sortedSet2 = new SortedSet<string>() { "a", "e", "h" };
sortedSet1.UnionWith(sortedSet2);
// (ПОМЕНЯЛИСЬ) в sortedSet1 элементы: "a", "b", "c", "e", "h",
// в sortedSet2 элементы: "a", "e", "h"
// Метод IntersectWith (Пересечение)
sortedSet1 = new SortedSet<string>() { "a", "b", "c" };
sortedSet2 = new SortedSet<string>() { "a", "e", "h" };
sortedSet1.IntersectWith(sortedSet2);
// в sortedSet1 элементы: "a"
// в sortedSet2 элементы: "a", "e", "h"
// Метод Overlaps (есть ли Пересечение?)
sortedSet1 = new SortedSet<string>() { "a", "b", "c" };
sortedSet2 = new SortedSet<string>() { "a", "e", "h" };
bool flag = sortedSet1.Overlaps(sortedSet2);
// flag = true
// в sortedSet1 элементы: "a", "b", "c"
// в sortedSet2 элементы: "a", "e", "h"
// Метод IsProperSubsetOf (является ли sortedSet1 строгим подмножеством параметра SortedSet)
sortedSet1 = new SortedSet<string>() { "a", "b" };
flag = sortedSet1.IsProperSubsetOf(new SortedSet<string>() { "a" }); // flag = false
flag = sortedSet1.IsProperSubsetOf(new SortedSet<string>() { "a", "b" }); // flag = false
flag = sortedSet1.IsProperSubsetOf(new SortedSet<string>() { "a", "b", "c" }); // flag = TRUE
// Метод IsSubsetOf (является ли sortedSet1 подмножеством параметра SortedSet)
sortedSet1 = new SortedSet<string>() { "a", "b" };
flag = sortedSet1.IsSubsetOf(new SortedSet<string>() { "a" }); // flag = false
flag = sortedSet1.IsSubsetOf(new SortedSet<string>() { "a", "b" }); // flag = TRUE
flag = sortedSet1.IsSubsetOf(new SortedSet<string>() { "a", "b", "c" }); // flag = TRUE
// Метод IsProperSupersetOf (является ли параметр SortedSet строгим подмножеством sortedSet1)
sortedSet1 = new SortedSet<string>() { "a", "b" };
flag = sortedSet1.IsProperSupersetOf(new SortedSet<string>() { "a" }); // flag = TRUE
flag = sortedSet1.IsProperSupersetOf(new SortedSet<string>() { "a", "b" }); // flag = false
flag = sortedSet1.IsProperSupersetOf(new SortedSet<string>() { "a", "b", "c" }); // flag = false
// Метод IsSupersetOf (является ли параметр SortedSet подмножеством sortedSet1)
sortedSet1 = new SortedSet<string>() { "a", "b" };
flag = sortedSet1.IsSupersetOf(new SortedSet<string>() { "a" }); // flag = TRUE
flag = sortedSet1.IsSupersetOf(new SortedSet<string>() { "a", "b" }); // flag = TRUE
flag = sortedSet1.IsSupersetOf(new SortedSet<string>() { "a", "b", "c" }); // flag = false
}
}
}