Презентация на тему: Тема 2.11. Коллекции

Тема 2.11. Коллекции
Цели
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Необобщенные коллекции
Основные интерфейсы:
Основные интерфейсы:
Основные интерфейсы:
Основные интерфейсы:
Интерфейсы реализуются следующими классами коллекций в пространстве имен System.Collections :
Интерфейсы реализуются следующими классами коллекций в пространстве имен System.Collections :
ArrayList
ArrayList
ArrayList
ArrayList
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Список List<T >
Список List<T >
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Двухсвязный список LinkedList <T>
Двухсвязный список LinkedList <T>
Двухсвязный список LinkedList <T>
Двухсвязный список LinkedList <T>
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Очередь Queue<T>
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Коллекция Stack<T >
Коллекция Stack<T >
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Коллекция Dictionary<T, V >
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Класс ObservableCollection
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Интерфейсы IEnumerable и IEnumerator
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Итераторы и оператор yield
Тема 2.11. Коллекции
Тема 2.11. Коллекции
Именованный итератор
Тема 2.11. Коллекции
1/58
Средняя оценка: 4.9/5 (всего оценок: 13)
Код скопирован в буфер обмена
Скачать (825 Кб)
1

Первый слайд презентации: Тема 2.11. Коллекции

Изображение слайда
1/1
2

Слайд 2: Цели

Ознакомиться с основными видами коллекций

Изображение слайда
1/1
3

Слайд 3

В языке C# есть массивы, которые хранят в себе наборы однотипных объектов, но работать с ними не всегда удобно. Массив хранит фиксированное количество объектов. Если неизвестно количество элементов массива, удобнее применять коллекции. Некоторые из коллекций реализует стандартные структуры данных, например, стек, очередь, словарь, которые могут пригодиться для решения различных специальных задач.

Изображение слайда
1/1
4

Слайд 4

Большая часть классов коллекций содержится в пространствах имен System.Collections ( простые необобщенные классы коллекций ), System.Collections.Generic  (обобщенные или типизированные классы коллекций) и  System.Collections.Specialized  (специальные классы коллекций). Для обеспечения параллельного выполнения задач и многопоточного доступа применяются классы коллекций из пространства имен System.Collections.Concurrent

Изображение слайда
1/1
5

Слайд 5

Основой для создания всех коллекций является реализация интерфейсов I e numerator и I e numerable ( и их обобщенных двойников IEnumerator <T> и IEnumerable <T > ).

Изображение слайда
1/1
6

Слайд 6

Интерфейс IEnumerator представляет перечислитель, с помощью которого становится возможен последовательный перебор коллекции, например, в цикле foreach. А интерфейс IEnumerable через свой метод GetEnumerator  предоставляет перечислитель всем классам, реализующим данный интерфейс. Поэтому интерфейс I e numerable ( IEnumerable <T >) является базовым для всех коллекций.

Изображение слайда
1/1
7

Слайд 7

Изображение слайда
Изображение для работы со слайдом
1/2
8

Слайд 8

Изображение слайда
Изображение для работы со слайдом
1/2
9

Слайд 9: Необобщенные коллекции

Необобщенные или простые коллекции определены в пространстве имен System.Collections. Их особенность состоит в том, что их функциональность, функциональные возможности описываются в интерфейсах, которые также находятся в этом пространстве имен.

Изображение слайда
1/1
10

Слайд 10: Основные интерфейсы:

IEnumerable : определяет метод GetEnumerator. Данный метод возвращает перечислитель - то есть некоторый объект, реализующий интерфейс IEnumerator. IEnumerator : реализация данного интерфейса позволяет перебирать элементы коллекции с помощью цикла foreach

Изображение слайда
1/1
11

Слайд 11: Основные интерфейсы:

ICollection : является основой для всех необобщенных коллекций, определяет основные методы и свойства для всех необобщенных коллекций (например, метод  CopyTo  и свойство  Count ). Данный интерфейс унаследован от интерфейса  IEnumerable, благодаря чему базовый интерфейс также реализуется всеми классами необобщенных коллекций IList : позволяет получать элементы коллекции по порядку. Также определяет ряд методов для манипуляции элементами:  Add  (добавление элементов),  Remove / RemoveAt  (удаление элемента) и ряд других.

Изображение слайда
1/1
12

Слайд 12: Основные интерфейсы:

IComparer : определяет метод  int Compare ( object x, object y ) для сравнения двух объектов IDictionary : определяет поведение коллекции, при котором она должна хранить объекты в виде пар ключ-значение: для каждого объекта определяется уникальный ключ, и этому ключу соответствует определенное значение IDictionaryEnumerator : определяет методы и свойства для перечислителя словаря

Изображение слайда
1/1
13

Слайд 13: Основные интерфейсы:

IEqualityComparer : определяет два метода Equals  и  GetHashCode, с помощью которых два объекта сравниваются на предмет равенства IStructuralComparer : определяет метод Compare  для структурного сравнения двух объектов: при таком сравнении сравниваются не ссылки на объекты, а непосредственное содержимое объектов IStructuralEquatable : позволяет провести структурное равенство двух объектов. Как и в случае с интерфейсом IStructuralComparer сравнивается содержимое двух объектов

Изображение слайда
1/1
14

Слайд 14: Интерфейсы реализуются следующими классами коллекций в пространстве имен System.Collections :

ArrayList : класс простой коллекции объектов. Реализует интерфейсы IList, ICollection, IEnumerable BitArray : класс коллекции, содержащей массив битовых значений. Реализует интерфейсы ICollection, IEnumerable Hashtable : класс коллекции, представляющей хэш-таблицу и храняющий набор пар " ключ-значение»

Изображение слайда
1/1
15

Слайд 15: Интерфейсы реализуются следующими классами коллекций в пространстве имен System.Collections :

Queue : класс очереди объектов, работающей по алгоритму FIFO(" первый вошел -первый вышел"). Реализует интерфейсы ICollection, IEnumerable SortedList : класс коллекции, хранящей наборы пар "ключ-значение", отсортированных по ключу. Реализует интерфейсы ICollection, IDictionary, IEnumerable Stack : класс стека

Изображение слайда
1/1
16

Слайд 16: ArrayList

Класс   ArrayList   представляет коллекцию объектов. Если надо сохранить вместе разнотипные объекты - строки, числа и т.д., то данный класс как раз для этого подходит.

Изображение слайда
1/1
17

Слайд 17: ArrayList

Основные методы класса: int Add(object value): добавляет в список объект value void AddRange ( ICollection col ): добавляет в список объекты коллекции col, которая представляет интерфейс ICollection - интерфейс, реализуемый коллекциями. void Clear(): удаляет из списка все элементы bool Contains(object value): проверяет, содержится ли в списке объект value. Если содержится, возвращает true, иначе возвращает false void CopyTo (Array array ): копирует текущий список в массив array.

Изображение слайда
1/1
18

Слайд 18: ArrayList

Основные методы класса: ArrayList GetRange ( int index, int count): возвращает новый список ArrayList, который содержит count элементов текущего списка, начиная с индекса index int IndexOf (object value): возвращает индекс элемента value void Insert( int index, object value): вставляет в список по индексу index объект value void InsertRange ( int index, ICollection col ): вставляет в список начиная с индекса index коллекцию ICollection int LastIndexOf (object value): возвращает индекс последнего вхождения в списке объекта value void Remove(object value): удаляет из списка объект value

Изображение слайда
1/1
19

Слайд 19: ArrayList

Основные методы класса: void RemoveAt ( int index): удаляет из списка элемент по индексу index void RemoveRange ( int index, int count): удаляет из списка count элементов, начиная с индекса index void Reverse(): переворачивает список void SetRange ( int index, ICollection col ): копирует в список элементы коллекции col, начиная с индекса index void Sort(): сортирует коллекцию

Изображение слайда
1/1
20

Слайд 20

Изображение слайда
Изображение для работы со слайдом
1/2
21

Слайд 21

Изображение слайда
Изображение для работы со слайдом
1/2
22

Слайд 22: Список List<T >

Класс List <T> из пространства имен System.Collections.Generic  представляет простейший список однотипных объектов.

Изображение слайда
1/1
23

Слайд 23: Список List<T >

Среди его методов можно выделить следующие: void Add (T item ) : добавление нового элемента в список void AddRange ( ICollection collection ) : добавление в список коллекции или массива int BinarySearch (T item ) : бинарный поиск элемента в списке. Если элемент найден, то метод возвращает индекс этого элемента в коллекции. При этом список должен быть отсортирован. int IndexOf (T item ) : возвращает индекс первого вхождения элемента в списке void Insert ( int index, T item ) : вставляет элемент item в списке на позицию index bool Remove (T item ) : удаляет элемент item из списка, и если удаление прошло успешно, то возвращает true void RemoveAt ( int index ) : удаление элемента по указанному индексу index void Sort () : сортировка списка

Изображение слайда
1/1
24

Слайд 24

Изображение слайда
Изображение для работы со слайдом
1/2
25

Слайд 25

Изображение слайда
Изображение для работы со слайдом
1/2
26

Слайд 26: Двухсвязный список LinkedList <T>

Класс  LinkedList <T>  представляет двухсвязный список, в котором каждый элемент хранит ссылку одновременно на следующий и на предыдущий элемент. Если в простом списке List<T> каждый элемент представляет объект типа T, то в LinkedList <T> каждый узел представляет объект класса  LinkedListNode <T>.

Изображение слайда
1/1
27

Слайд 27: Двухсвязный список LinkedList <T>

Класс имеет следующие свойства: Value : само значение узла, представленное типом T Next : ссылка на следующий элемент типа LinkedListNode <T> в списке. Если следующий элемент отсутствует, то имеет значение null Previous : ссылка на предыдущий элемент типа LinkedListNode <T> в списке. Если предыдущий элемент отсутствует, то имеет значение null

Изображение слайда
1/1
28

Слайд 28: Двухсвязный список LinkedList <T>

Используя методы класса LinkedList <T>, можно обращаться к различным элементам, как в конце, так и в начале списка: AddAfter ( LinkedListNode <T> node, LinkedListNode <T> newNode ) : вставляет узел newNode в список после узла node. AddAfter ( LinkedListNode <T> node, T value) : вставляет в список новый узел со значением value после узла node. AddBefore ( LinkedListNode <T> node, LinkedListNode <T> newNode ) : вставляет в список узел newNode перед узлом node. AddBefore ( LinkedListNode <T> node, T value) : вставляет в список новый узел со значением value перед узлом node.

Изображение слайда
1/1
29

Слайд 29: Двухсвязный список LinkedList <T>

Используя методы класса LinkedList <T>, можно обращаться к различным элементам, как в конце, так и в начале списка: AddFirst ( LinkedListNode <T > node) : вставляет новый узел в начало списка AddFirst (T value) : вставляет новый узел со значением value в начало списка AddLast ( LinkedListNode <T> node) : вставляет новый узел в конец списка AddLast (T value) : вставляет новый узел со значением value в конец списка RemoveFirst () : удаляет первый узел из списка. После этого новым первым узлом становится узел, следующий за удаленным RemoveLast () : удаляет последний узел из списка

Изображение слайда
1/1
30

Слайд 30

Изображение слайда
Изображение для работы со слайдом
1/2
31

Слайд 31

Изображение слайда
Изображение для работы со слайдом
1/2
32

Слайд 32: Очередь Queue<T>

Класс  Queue <T> представляет обычную очередь, работающую по алгоритму FIFO ("первый вошел - первый вышел"). У класса  Queue <T> можно отметить следующие методы: Dequeue : извлекает и возвращает первый элемент очереди Enqueue : добавляет элемент в конец очереди Peek : просто возвращает первый элемент из начала очереди без его удаления

Изображение слайда
1/1
33

Слайд 33

Изображение слайда
Изображение для работы со слайдом
1/2
34

Слайд 34

Изображение слайда
Изображение для работы со слайдом
1/2
35

Слайд 35: Коллекция Stack<T >

Класс  Stack <T> представляет коллекцию, которая использует алгоритм LIFO ("последний вошел - первый вышел"). При такой организации каждый следующий добавленный элемент помещается поверх предыдущего. Извлечение из коллекции происходит в обратном порядке - извлекается тот элемент, который находится выше всех в стеке.

Изображение слайда
1/1
36

Слайд 36: Коллекция Stack<T >

В классе Stack можно выделить два основных метода, которые позволяют управлять элементами: Push : добавляет элемент в стек на первое место Pop : извлекает и возвращает первый элемент из стека Peek : просто возвращает первый элемент из стека без его удаления

Изображение слайда
1/1
37

Слайд 37

Изображение слайда
Изображение для работы со слайдом
1/2
38

Слайд 38

Изображение слайда
Изображение для работы со слайдом
1/2
39

Слайд 39

Работу стека можно представить следующей иллюстрацией :

Изображение слайда
Изображение для работы со слайдом
1/2
40

Слайд 40: Коллекция Dictionary<T, V >

Еще один распространенный тип коллекции представляют словари. Словарь хранит объекты, которые представляют пару ключ-значение. Каждый такой объект является объектом структуры  KeyValuePair < TKey, TValue >. Благодаря свойствам  Key  и  Value, которые есть у данной структуры, можно получить ключ и значение элемента в словаре.

Изображение слайда
1/1
41

Слайд 41

Изображение слайда
Изображение для работы со слайдом
1/2
42

Слайд 42

Изображение слайда
Изображение для работы со слайдом
1/2
43

Слайд 43: Класс ObservableCollection

Кроме стандартных классов коллекций типа списков, очередей, словарей, стеков.NET также предоставляет специальный класс ObservableCollection. Он по функциональности похож на список List за тем исключением, что позволяет известить внешние объекты о том, что коллекция была изменена.

Изображение слайда
1/1
44

Слайд 44

Изображение слайда
Изображение для работы со слайдом
1/2
45

Слайд 45

Изображение слайда
Изображение для работы со слайдом
1/2
46

Слайд 46: Интерфейсы IEnumerable и IEnumerator

Интерфейс IEnumerable имеет метод, возвращающий ссылку на другой интерфейс - перечислитель :

Изображение слайда
Изображение для работы со слайдом
1/2
47

Слайд 47

Интерфейс IEnumerator определяет функционал для перебора внутренних объектов в контейнере:

Изображение слайда
Изображение для работы со слайдом
1/2
48

Слайд 48

Метод  MoveNext ()  перемещает указатель на текущий элемент на следующую позицию в последовательности. Если последовательность еще не закончилась, то возвращает true. Если же последовательность закончилась, то возвращается false. Свойство  Current  возвращает объект в последовательности, на который указывает указатель. Метод  Reset ()  сбрасывает указатель позиции в начальное положение.

Изображение слайда
1/1
49

Слайд 49

Изображение слайда
Изображение для работы со слайдом
1/2
50

Слайд 50

Изображение слайда
Изображение для работы со слайдом
1/2
51

Слайд 51

Изображение слайда
Изображение для работы со слайдом
1/2
52

Слайд 52

Изображение слайда
Изображение для работы со слайдом
1/2
53

Слайд 53

Изображение слайда
Изображение для работы со слайдом
1/2
54

Слайд 54: Итераторы и оператор yield

Итератор  по сути представляет блок кода, который использует оператор  yield  для перебора набора значений. Данный блок кода может представлять тело метода, оператора или блок get в свойствах. Итератор использует две специальных инструкции: yield return : определяет возвращаемый элемент yield break : указывает, что последовательность больше не имеет элементов

Изображение слайда
1/1
55

Слайд 55

Изображение слайда
Изображение для работы со слайдом
1/2
56

Слайд 56

Изображение слайда
Изображение для работы со слайдом
1/2
57

Слайд 57: Именованный итератор

Оператор   yield  можно использовать внутри любого метода, только такой метод должен возвращать объект интерфейса IEnumerable. Подобные методы еще называют  именованными итераторами.

Изображение слайда
1/1
58

Последний слайд презентации: Тема 2.11. Коллекции

https://metanit.com/sharp/tutorial/4.1.php

Изображение слайда
1/1