В классе Queue определяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Некоторые из наиболее часто используемых методов этого класса перечислены в табл. 25.8. Эти методы обычно применяются следующим образом. Для того чтобы поместить объект в очередь, вызывается метод Enqueue () . Если требуется извлечь' и удалить первый объект из начала очереди, то вызывается метод Dequeue (). Если же требуется извлечь, но не удалять следующий объект из очереди, то вызывается метод Реек (). А если методы DequeueO иРеек() вызываются, когда очередь пуста, то генерируется исключение InvalidOperationException.
Таблица 25.8. Наиболее часто используемые методы, определенные в классе Queue
Метод
Описание
public virtual void Clear()
public virtual bool Contains(object obj)
public virtual object Dequeue()
public virtual void Enqueue(object obj)
Устанавливает свойство Countравным нулю, очищая, по существу, очередь
Возвращает логическое значение true,если объект objсодержится в вызывающей очереди, а иначе — логическое значение falseВозвращает объект из начала вызывающей очереди. Возвращаемый объект удаляется из очереди Добавляет объект objв конец очереди
Окончание табл. 25.8
Метод
Описание
public virtual object Peek()
public static Queue Synchronized(Queue queue)
public virtual object[] ToArray()
public virtual void TrimToSize()
Возвращает объект из начала вызывающей очереди, но не удаляет его
Возвращает синхронизированный вариант коллекции типа Queue,передаваемой в качестве параметра queue
Возвращает массив, который содержит копии элементов из вызывающей очереди Устанавливает значение свойства Capacityравным значению свойства Count
В приведенном ниже примере программы демонстрируется применение класса
Queue.
// Продемонстрировать применение класса Queue.
using System;
using System.Collections;
class QueueDemo {
static void ShowEnq(Queue q, int a) { q.Enqueue(a) ;
Console.WriteLine("Поместить в очередь: Enqueue(" + a + ")");
Console.Write("Содержимое очереди: "); foreach(int i in q)
Console.Write(i + " ");
Console.WriteLine() ;
}
static void ShowDeq(Queue q) {
Console.Write("Извлечь из очереди: Dequeue -> "); int a = (int) q.Dequeue();
Console.WriteLine(a);
Console.Write("Содержимое очереди: "); foreach(int i in q)
Console.Write(i + " ") ;
Console.WriteLine();
}
static void Main() {
Queue q = new Queue();
foreach(int i in q)
Console.Write(i + " ");
ShowEnq(q, 22);
ShowEnq(q, 65);
ShowEnq(q, 91);
ShowDeq(q);
ShowDeq(q);
ShowDeq(q);
try {
ShowDeq (q);
} catch (InvalidOperationException) { Console.WriteLine("Очередь пуста.");
}
}
}
Эта программа дает следующий результат.
Поместить в очередь: Enqueue(22)
Содержимое очереди: 22 Поместить в очередь: Enqueue(65)
Содержимое очереди: 22 65 Поместить в очередь: Enqueue(91)
Содержимое очереди: 22 65 91 Извлечь из очереди: Dequeue -> 22 Содержимое очереди: 65 91 Извлечь из очереди: Dequeue -> 65 Содержимое очереди: 91 Извлечь из очереди: Dequeue -> 91 Содержимое очереди:
Извлечь из очереди: Dequeue -> Очередь пуста.
Хранение отдельных битов в классе коллекции BitArray
Класс BitArray служит для хранения отдельных битов в коллекции. А поскольку в коллекции этого класса хранятся биты, а не объекты, то своими возможностями он отличается от классов других коллекций. Тем не менее в классе BitArray реализуются интерфейсы ICollection и IEnumerable как основополагающие элементы поддержки всех типов коллекций. Кроме того, в классе BitArray реализуется интерфейс ICloneable.
В классе BitArray определено несколько конструкторов. Так, с помощью приведенного ниже конструктора можно сконструировать объект типа BitArray из массива логических значений.
public BitArray(bool[] values)
В данном случае каждый элемент массива values становится отдельным битом в коллекции. Это означает, что каждому элементу массива values соответствует отдельный бит в коллекции. Более того, порядок расположения элементов в массиве values сохраняется и в коллекции соответствующих им битов.
Читать дальше