В классе 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(Queuequeue) - Возвращает синхронизированный вариант коллекции типа Queue, передаваемой в качестве параметра 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 -> Очередь пуста.

<p>Хранение отдельных битов в классе коллекции BitArray</p>
Перейти на страницу:

Похожие книги