ICollection с = sl.Keys;
// Использовать ключи для получения значений, т.е. зарплаты,
foreach(string str in с)
Console.WriteLine("{0}, зарплата: {1:C}", str, sl[str]);
Console.WriteLine();
}
}
Ниже приведен результат выполнения этой программы.
Батлер, Джон, зарплата: $73,000.00
Пайк, Томас, зарплата: $45,000.00
Фрэнк, Эд, зарплата: $99,000.00
Шварц, Сара, зарплата: $59,000.00
Как видите, список работников и их зарплаты отсортированы по ключу, в качестве которого в данном случае служит фамилия и имя работника.
Класс Stack
Класс Stack
является обобщенным эквивалентом класса необобщенной коллекции Stack
. В нем поддерживается стек в виде списка, действующего по принципу "первым пришел — последним обслужен". В этом классе реализуются интерфейсы Collection, IEnumerable
и IEnumerable
. Кроме того, в классе Stack
непосредственно реализуются методы Clear(),Contains()
и СоруТо()
, определенные в интерфейсе ICollection
. А методы Add()
и Remove()
в этом классе не поддерживаются, как, впрочем, и свойство IsReadOnly
. Коллекция класса Stack
имеет динамический характер, расширяясь по мере необходимости, чтобы вместить все элементы, которые должны в ней храниться. В классе Stack
определяются следующие конструкторы.
public Stack()
public Stack(int capacity)
public Stack(IEnumerable collection)
В первой форме конструктора создается пустой стек с выбираемой по умолчанию первоначальной емкостью, а во второй форме — пустой стек, первоначальный размер которого определяет параметр capacity. И в третьей форме создается стек, содержащий элементы коллекции, определяемой параметром collection. Его первоначальная емкость равна количеству указанных элементов.
В классе Stack
определяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются, а также в интерфейсе ICollection
. Некоторые из наиболее часто используемых методов этого класса перечислены в табл.25.20. Как и в классе Stack
, эти методы обычно применяются следующим образом. Для того чтобы поместить объект на вершине стека, вызывается метод Push()
. А для того чтобы извлечь и удалить объект из вершины стека, вызывается метод Pop()
. Если же объект требуется только извлечь, но не удалить из вершины стека, то вызывается метод Реек()
. А если вызвать метод Pop()
или Реек()
, когда вызывающий стек пуст, то сгенерируется исключение InvalidOperationException
.
Таблица 25.20. Методы, определенные в классе Stack
Метод -Описание
public T Peek() -Возвращает элемент, находящийся на вершине стека, но не удаляет его
public T Pop() -Возвращает элемент, находящийся на вершине стека, удаляя его в процессе работы
public void Push(T item) - Помещает элемент item в стек
Public T[] ToArray() -Возвращает массив, содержащий копии элементов вызывающего стека
public void TrimExcess() -Сокращает избыточную емкость вызывающей коллекции в виде стека
В приведенном ниже примере программы демонстрируется применение класса Stack.
// Продемонстрировать применение класса Stack.
using System;
using System.Collections.Generic;
class GenStackDemo {
static void Main() {
Stack st = new Stack();
st.Push("один");
st.Push("два");
st.Push("три");
st.Push("четыре");
st.Push("пять");
while(st.Count > 0) {
string str = st.Pop();
Console.Write(str + " ");
}
Console.WriteLine();
}
}
При выполнении этой программы получается следующий результат.
пять четыре три два один
Класс Queue
Класс Queue
является обобщенным эквивалентом класса необобщенной коллекции Queue
. В нем поддерживается очередь в виде списка, действующего по принципу "первым пришел — первым обслужен". В этом классе реализуются интерфейсы ICollection, IEnumerable
и IEnumerable
. Кроме того, в классе Queue
непосредственно реализуются методы Clear(), Contains()
и CopyTo()
, определенные в интерфейсе ICollection
. А методы Add()
и Remove()
в этом классе не поддерживаются, как, впрочем, и свойство IsReadOnly
. Коллекция класса Queue
имеет динамический характер, расширяясь по мере необходимости, чтобы вместить все элементы, которые должны храниться в ней. В классе Queue
определяются следующие конструкторы.
Читать дальше