Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Использование простую коллекцию

Операции над коллекциями

По реализации

На уровне реализации коллекция может представлять собой одну из следующих структур данных:

· Массив

· Односвязный список

· Двусвязный список

· Стек

· Хеш-таблица

· Битовый массив

В зависимости от логического типа коллекции и от реализации могут поддерживаться различные операции над коллекциями в целом. Во всех случаях операции могут производиться только над парами коллекций одного типа (и, если коллекции не гетерогенные, с одним типом элементов). Могут поддерживаться также следующие операции:

Для всех видов коллекций — объединение. Результатом такой операции становится коллекция того же типа, что и операнды, содержащая все элементы, содержащиеся в операндах.

Для векторов и матриц, содержащих числовые значения — типичные математические операции над одноимёнными объектами: сложение, вычитание, умножение, транспонирование.

Для векторов — извлечения диапазона индексов. Результатом такой операции будет вектор того же типа, содержащий только те элементы исходного, которые попадают в некоторый заданный диапазон.

Для векторов и списков — сортировка.

Для множеств — объединение, пересечение, разность и симметричная разность.

В примерах этого раздела используется универсальный шаблон класс List<T>, который позволяет работать с строго типизированный список объектов.

В следующем примере создается список строк, а затем просматриваются строки с помощью выписки For each… next (Visual Basic) или foreach (c#).

var salmons = new List<string>();

salmons.Add("chinook");

salmons.Add("coho");

salmons.Add("pink");

salmons.Add("sockeye");

foreach (var salmon in salmons)

{

Console.Write(salmon + " ");

}

Если содержимое коллекции известны заранее, можно использовать инициализатор набора для инициализации коллекции. Дополнительные сведения см. в разделе Инициализаторы коллекций (Visual Basic) или Инициализаторы объектов и коллекций (Руководство по программированию в C#).

Следующий пример такой же, как и предыдущий, за исключением того, что инициализатор набора используется для добавления элементов в коллекцию.

var salmons = new List<string> { "chinook", "coho", "pink", "sockeye" };

// Iterate through the list.

foreach (var salmon in salmons)

{

Console.Write(salmon + " ");

}

Можно использовать выписку For… next (Visual Basic) или для (c#) вместо выписки For Each для прохода по коллекции. Это выполняется путем доступа к элементам коллекции по позиции индекса. Индекс начинается с 0 и заканчивается элементов в элементе учитываются минус 1.

Следующий пример выполняет итерацию по элементам коллекции с помощью For…Next вместо For Each.

var salmons = new List<string> { "chinook", "coho", "pink", "sockeye" };

for (var index = 0; index < salmons.Count; index++)

{

Console.Write(salmons[index] + " ");

}

Следующий пример удаляет элемент из коллекции путем указания объекта для удаления.

var salmons = new List<string> { "chinook", "coho", "pink", "sockeye" };

salmons.Remove("coho");

foreach (var salmon in salmons)

{

Console.Write(salmon + " ");

}

Следующий пример удаляет элементы из универсального списка. Вместо выписки For Each, используется оператор For… next (Visual Basic) или для (c#), проходящий по убыванию. Это происходит потому, что метод RemoveAt вызывает элементы после удаленного элемента иметь меньшее значение индекса.

var numbers = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

// Remove odd numbers.

for (var index = numbers.Count - 1; index >= 0; index--)

{

if (numbers[index] % 2 == 1)

{

// Remove the element by specifying

// the zero-based index in the list.

numbers.RemoveAt(index);

}

}

// Iterate through the list.

// A lambda expression is placed in the ForEach method

// of the List(T) object.

numbers.ForEach(

number => Console.Write(number + " "));

// Output: 0 2 4 6 8

Для типа элементов в List<T> можно также определить собственный класс. В следующем примере класс Galaxy, который используется List<T> определенный в коде.

private void IterateThroughList()

{

var theGalaxies = new List<Galaxy>

{

new Galaxy() { Name="Tadpole", MegaLightYears=400},

new Galaxy() { Name="Pinwheel", MegaLightYears=25},

new Galaxy() { Name="Milky Way", MegaLightYears=0},

new Galaxy() { Name="Andromeda", MegaLightYears=3}

};

foreach (Galaxy theGalaxy in theGalaxies)

{

Console.WriteLine(theGalaxy.Name + " " + theGalaxy.MegaLightYears);

}

}

public class Galaxy

{

public string Name { get; set; }

public int MegaLightYears { get; set; }

}

<== предыдущая лекция | следующая лекция ==>
По логике организации | Типы коллекций
Поделиться с друзьями:


Дата добавления: 2014-01-14; Просмотров: 420; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.017 сек.