КАТЕГОРИИ: Архитектура-(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; Просмотров: 464; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |