• ICollection (здесь определено свойство int Count {get;} ),
• lEnumerable,
• ICloneable.
Методы, определенные в классе Queue
Метод | Описание |
public virtual bool Contains(object v) | Возвращает значение true, если объект v содержится в вызывающей очереди. В противном случае возвращает значение false |
Public virtual void Clear() | Устанавливает свойство Count равным нулю, тем самым эффективно очищая очередь |
public virtual object Dequeue() | Возвращает объект из начала вызывающей очереди, Возвращаемый объект из очереди удаляется |
public virtual void Enqueue(object v) | Добавляет объект v в конец очереди |
public virtual object Peek ( ) | Возвращает объект из начала вызывающей очереди, но не удаляет его |
public static Queue Synchronized(Queue q) | Возвращает синхронизированную версию очереди, заданной параметром q |
public virtual object[ ] ToArray ( ) | Возвращает массив, который содержит копии элементов из вызывающей очереди |
public virtual void TrimToSlze( ) | Устанавливает свойство capacity равным значению свойства Count |
// Демонстрация класса Queue.
using System;
using System.Collections;
Class QueueDemo
{
public static void Main()
{
int a;
Queue q = new Queue();
q.Enqueue(22);
q.Enqueue(65);
q.Enqueue(91);
foreach (int i in q)
Console.Write(i + " ");
Console.WriteLine();
try
{
a = (int)q.Dequeue(); Console.WriteLine(a);
a = (int)q.Dequeue(); Console.WriteLine(a);
a = (int)q.Dequeue(); Console.WriteLine(a);
a = (int)q.Dequeue(); Console.WriteLine(a);
}
catch (InvalidOperationException)
{
Console.WriteLine("Очередь пуста.");
}
}
}
Класс Hashtable
Класс Hashtable предназначен для создания коллекции, в которой для хранения объектов используется хеш-таблица. В хеш-таблице для хранения информации используется механизм, именуемый хешированием (hashing), Суть хеширования состоит в том, что для определения уникального значения, которое, называется хеш-кодом, используется информационное содержимое соответствующего ему ключа. Хеш-код затем используется в качестве индекса, по которому в таблице отыскиваются данные, соответствующие этому ключу.
Преимущество хеширования — в том, что оно позволяет сохранять постоянным время выполнения таких операций, как поиск, считывание и запись данных, даже для больших объемов информации.
Hashtable-коллекция не гарантирует сохранения порядка элементов.
Класс Hashtable реализует интерфейсы:
• IDictionary,
• ICollection,
• lEnumerable,
• ISerializable,
• IDeserializationCallback,
• ICloneable.
В классе Hashtable определено множество конструкторов, но чаще всего используется следующий:
public Hashtable();
Наиболее употребимые методы класса Hashtable
Метод | Описание |
public virtual bool ContainsKey(object k) | Возвращает значение true, если в вызывающей Hashtable-коллекции содержится ключ, заданный параметром k. В противном случае возвращает значение false. |
public virtual bool ContainsValue(object v) | Возвращает значение true, если в вызывающей Hashtable-коллекции содержится значение, заданное параметром v. В противном случае возвращает значение false |
public virtual IDictionaryEnumerator GetEnumerator() | Возвращает для вызывающей Hashtable-коллекции нумератор типа IDictionaryEnumerator |
public static Hashtable Synchronized( Hashtable ht) | Возвращает синхронизированную версию вызывающей Hashtabie-коллекции, переданной в параметре ht. |
В классе Hashtable, помимо свойств, определенных в реализованных им интерфейсах, также определены два собственных public-свойства. Используя следующие свойства, можно из Hashtable-коллекции получить коллекцию ключей или значений:
public virtual ICollection Keys { get ; }
public virtual ICollection Values { get ; }
В классе определен так же и индексатор
this[ключ] {get; set;}
В классе Hashtable пары ключ/значение хранятся в форме структуры типа DictionaryEntry, но по большей части вас это не будет касаться, поскольку свойства и методы обрабатывают ключи и значения отдельно.
// Демонстрация использования Hashtable-коллекции.
using System;
using System.Collections;
Class HashtableDemo
{
public static void Main()
{
Hashtable ht = new Hashtable(); // Создаем хеш-таблицу.
// Добавляем элементы в хеш-таблицу.
ht.Add("здание", "жилое помещение");
ht.Add("книга", "набор печатных слов");
ht.Add("яблоко", "съедобный фрукт");
ht.Add("автомобиль", "транспортное средство");
//Добавляем элементы с помощью индексатора.
ht ["трактор"] = "сельскохозяйственная машина";
// Извлекаем элемент по ключу.
string value = (string)ht ["автомобиль"];
Console.WriteLine ("---автомобиль: " + value);
// Получаем коллекцию ключей.
// Используем ключи для получения значений.
Console.WriteLine("\n---Первый способ---");
ICollection с = ht.Keys;
foreach(string str in с)
Console.WriteLine(str + ": " + ht[str]);
ht.Remove("трактор"); // Удалить элемент
Console.WriteLine("\n---Второй способ---");
// Используем структуру DictionaryEntry для получения ключей и значений.
foreach (DictionaryEntry de in ht)
{
Console.WriteLine(de.Key + ": " + de.Value);
}
}
}
Дата: 2019-02-02, просмотров: 285.