В классе Queue определяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Некоторые из наиболее часто используемых методов этого класса перечислены в табл. 25.8. Эти методы обычно применяются следующим образом. Для того чтобы поместить объект в очередь, вызывается метод Enqueue()
. Если требуется извлечь и удалить первый объект из начала очереди, то вызывается метод Dequeue()
. Если же требуется извлечь, но не удалять следующий объект из очереди, то вызывается метод Реек()
. А если методы Dequeue()
и Реек()
вызываются, когда очередь пуста, то генерируется исключение InvalidOperationException
.
Таблица 25.8. Наиболее часто используемые методы, определенные в классе Queue
Метод - Описание
public virtual void Clear() - Устанавливает свойство Count равным нулю, очищая, по существу, очередь
public virtual bool Contains(object obj) - Возвращает логическое значение true, если объект obj содержится в вызывающей очереди, а иначе — логическое значение false
public virtual object Dequeue() - Возвращает объект из начала вызывающей очереди. Возвращаемый объект удаляется из очереди
public virtual void Enqueue(object obj) - Добавляет объект obj в конец очереди
public virtual object Peek() - Возвращает объект из начала вызывающей очереди, но не удаляет его
public static Queue Synchronized(Queue
public virtual object[] ToArray() - Возвращает массив, который содержит копии элементов из вызывающей очереди
public virtual void TrimToSize() - Устанавливает значение свойства 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