Герберт Шилдт - C# 4.0 полное руководство - 2011
- Название:C# 4.0 полное руководство - 2011
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Герберт Шилдт - C# 4.0 полное руководство - 2011 краткое содержание
C# 4.0 полное руководство - 2011 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
В классе HashSet реализуется интерфейс ISet, а следовательно, в нем предоставляется полный набор операций со множествами. В этом классе предоставляется также метод RemoveWhere () , удаляющий из множества элементы, не удовлетворяющие заданному условию, или предикату.
Помимо свойств, определенных в интерфейсах, которые реализуются в классе HashSet, в него введено дополнительное свойство Comparer, приведенное ниже.
public IEqualityComparer Comparer { get; }
Оно позволяет получать метод сравнения для вызывающего хеш-множества.
Ниже приведен конкретный пример применения класса HashSet.
// Продемонстрировать применение класса HashSet. using System;
using System.Collections.Generic;
class HashSetDemo {
static void Show(string msg, HashSet set) {
Console.Write(msg); foreach(char ch in set)
Console.Write(ch + " ");
Console.WriteLine ();
}
static void Main() {
HashSet setA = new HashSet ();
HashSet setB = new HashSet ();
setA.Add('A'); setA.Add(' В'); setA.Add('C') ;
setB.Add('С') ; setB.Add(' D 1);
setB.Add('Е');
Show("Исходное содержимое множества setA: ", setA);
Show("Исходное содержимое множества setB: ", setB);
setA.SymmetricExceptWith(setB);
Show("Содержимое множества setA после " +
"разноименности со множеством SetB: ", setA);
setA.UnionWith(setB);
Show("Содержимое множества setA после " +
"объединения со множеством SetB: ", setA);
setA.ExceptWith(setB);
Show("Содержимое множества setA после " +
"вычитания из множества setB: ", setA);
Console.WriteLine();
}
}
Ниже приведен результат выполнения программы из данного примера.
Исходное содержимое множества setA: ABC Исходное содержимое множества setB: С D Е
Содержимое множества setA после разноименности со множеством SetB: А В D Е Содержимое множества setA после объединения со множеством SetB: А В D Е С Содержимое множества setA после вычитания из множества setB: А В
Класс SortedSet
Класс SortedSet представляет собой новую разновидность коллекции, введенную в версию 4.0 среды .NET Framework. В нем поддерживается коллекция, реализующая отсортированное множество. В классе SortedSet реализуются интерфейсы ISet, ICollection, ICollection, IEnumerable, IEnumerable, ISerializable, а также IDeserializationCallback. В коллекции типа SortedSet реализуется множество, все элементы которого являются уникальными. Иными словами, дубликаты в таком множестве не допускаются. В классе SortedSet определяется полный набор операций с множеством, определенных в интерфейсе ISet, включая пересечение, объединение и разноименность. Благодаря тому что все элементы коллекции типа SortedSet сохраняются в отсортированном порядке, класс SortedSet оказывается идеальным средством для работы с отсортированными множествами объектов. Коллекция типа SortedSet имеет динамический характер и расширяется по мере необходимости, чтобы вместить все элементы, которые должны в ней храниться.
Ниже перечислены четыре наиболее часто используемые конструктора, определенных в классе SortedSet.
public SortedSetO
public SortedSet(IEnumerable collection) public SortedSet(IComparer comparer)
public SortedSet(IEnumerable collection, IComparer comparer)
В первой форме конструктора создается пустое множество, а во второй форме — множество, состоящее из элементов указываемой коллекции collection. В третьей форме конструктора допускается указывать способ сравнения с помощью параметра comparer. А в четвертой форме создается множество, состоящее из элементов указываемой коллекции collection , и используется заданный способ сравнения comparer. Имеется также пятая форма конструктора данного класса, в которой допускается инициализировать множество последовательно упорядоченными данными.
В классе SortedSet реализуется интерфейс ISet, а следовательно, в нем предоставляется полный набор операций со множествами. В этом классе предоставляется также метод GetViewBetween (), возвращающий часть множества в форме объекта типа SortedSet, метод RemoveWhere (), удаляющий из множества элементы, не удовлетворяющие заданному условию, или предикату, а также метод Reverse (), возвращающий объект типа IEnumerable, который циклически проходит множество в обратном порядке.
Помимо свойств, определенных в интерфейсах, которые реализуются в классе SortedSet, в него введены дополнительные свойства, приведенные ниже.
public IComparer Comparer { get; } public T Max { get; } public T Min { get; }
Свойство Comparer получает способ сравнения для вызывающего множества. Свойство Мах получает наибольшее значение во множестве, а свойство Min — наименьшее значение во множестве.
В качестве примера применения класса SortedSet на практике просто замените обозначение HashSet на SortedSet в исходном коде программы из предыдущего подраздела, посвященного коллекциям типа HashSet.
Параллельные коллекции
В версию 4.0 среды .NET Framework добавлено новое пространство имен System. Collections . Concurrent. Оно содержит коллекции, которые являются потокобезопасными и специально предназначены для параллельного программирования. Это означает, что они могут безопасно использоваться в многопоточной программе, где возможен одновременный доступ к коллекции со стороны двух или больше параллельно исполняемых потоков. Ниже перечислены классы параллельных коллекций.
Параллельная коллекция
Описание
BlockingCollection
Предоставляет оболочку для блокирующей реализации интерфейса IProducerConsumerCollection
ConcurrentBag
Обеспечивает неупорядоченную реализацию интерфейса
IProducerConsumerCollection,которая оказыва
ется наиболее пригодной в том случае, когда информация вырабатывается и потребляется в одном потоке
ConcurrentDictionary
Сохраняет пары “ключ-значение", а значит, реализует парал
Интервал:
Закладка: