Слайд 2
![Коллекции – это наше всё Стандартные коллекции являются фундаментальной основой](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-1.jpg)
Коллекции – это наше всё
Стандартные коллекции являются фундаментальной основой программирования на
языке Java. Они используются почти в любом приложении, поэтому каждый уважающий себя разработчик просто обязан уметь эффективно использовать Java Collections Framework.
Слайд 3
![Определение Коллекция — это контейнер для группы элементов, которые представляют](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-2.jpg)
Определение
Коллекция — это контейнер для группы элементов, которые представляют собой единое целое. Например: банка
конфет, список имён и тд. Коллекции используются почти в каждом языке программирования, и Java не является исключением. Как только коллекции появились в Java, то насчитывали всего несколько классов: Vector, Stack, Hashtable, Array. Но уже в Java 1.2 появился полноценный Java Collections Framework.
Слайд 4
![Интерфейсы Интерфейсы обеспечивают абстрактные типы данных для представления коллекций. java.util.Collection](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-3.jpg)
Интерфейсы
Интерфейсы обеспечивают абстрактные типы данных для представления коллекций. java.util.Collection — находится на
вершине иерархии, и содержит наиболее важные методы: size(), iterator(), add(), remove(), clear(). Каждая коллекция должна реализовывать эти методы. Также есть другие важные интерфейсы: java.util.List, java.util.Set, java.util.Queue и java.util.Map. Map является единственным интерфейсом, который не наследуется от интерфейса Collection, но является неотъемлемой частью коллекций. Все интерфейсы фреймворка находятся в пакете java.util.
Слайд 5
![Реализации интерфейсов JCF предоставляет готовые классы с реализацией вышеупомянутых интерфейсов.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-4.jpg)
Реализации интерфейсов
JCF предоставляет готовые классы с реализацией вышеупомянутых интерфейсов. С помощью классов ArrayList,
LinkedList, HashMap, TreeMap, HashSet, TreeSet можно решить огромное количество задач, но если нужна специальная реализация той или иной коллекции, то можно отнаследоваться и работать со своей реализацией. В Java 1.5 добавили потокобезопасные коллекции, которые позволили изменять содержимое коллекции время итерации по элементам. Эти классы находятся в пакете java.util.concurrent. Все классы коллекций находятся в пакетах java.util и java.util.concurrent.
Слайд 6
![Диаграмма классов JCF](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-5.jpg)
Слайд 7
![Ну ладно, ладно… теперь нормальная диаграмма ☺](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-6.jpg)
Ну ладно, ладно… теперь нормальная диаграмма ☺
Слайд 8
![Collection interface](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-7.jpg)
Слайд 9
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-8.jpg)
Слайд 10
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-9.jpg)
Слайд 11
![](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-10.jpg)
Слайд 12
![Преимущества JCF Требует меньше усилий — фреймворк располагает множеством готовых](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-11.jpg)
Преимущества JCF
Требует меньше усилий — фреймворк располагает множеством готовых распространённых типов коллекций
и полезных методов для манипуляции данными
Отличное качество реализации — использование хорошо проверенных коллекций увеличивает качество программы
Повторное использование и совместимость
Слайд 13
![Интерфейсы коллекций Обратите внимание, что все интерфейсы являются generic, например](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-12.jpg)
Интерфейсы коллекций
Обратите внимание, что все интерфейсы являются generic, например public interface Collection. Использование —
это указание типа объекта, который коллекция может содержать. Это помогает сократить ошибки времени выполнения с помощью проверки типов объектов во время компиляции.
Слайд 14
![Iterable interface Итератор предоставляет методы для перебора элементов любой коллекции.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-13.jpg)
Iterable interface
Итератор предоставляет методы для перебора элементов любой коллекции. Можно получить
экземпляр итератора из коллекции с помощью метода iterator(). Итераторы позволяют удалить элементы из базовой коллекции во время выполнения итерации, либо просто перебрать все элементы.
Слайд 15
![Другие интерфейсы Set - набор представляет собой коллекцию, которая не](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-14.jpg)
Другие интерфейсы
Set - набор представляет собой коллекцию, которая не может содержать
повторяющиеся элементы
List - cписок представляет собой упорядоченный набор элементов и может содержать повторяющиеся элементы. Можно получить доступ к любому элементу по индексу. Один из наиболее используемых типов коллекций
Слайд 16
![Другие интерфейсы Queue – элементы обычно располагаются по принципу FIFO](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-15.jpg)
Другие интерфейсы
Queue – элементы обычно располагаются по принципу FIFO
Dequeue – поддерживается
добавление и удаление элементов как с конца, так и с начала очереди
Map – коллекция объектов-пар ключ-значение, причём обычно ключи повторяться не могут
Слайд 17
![Другие интерфейсы SortedSet - представляет собой множество, в котором элементы](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-16.jpg)
Другие интерфейсы
SortedSet - представляет собой множество, в котором элементы хранятся в порядке
возрастания
SortedMap - содержит элементы в порядке возрастания ключей. Является аналогом SortedSet. Используется для естественно упорядоченных пар ключ/значение, например, словарей и телефонных справочников
Слайд 18
![Сравнение коллекций](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-17.jpg)
Слайд 19
![Что почитать о коллекциях http://www.quizful.net/post/Java-Collections http://docs.oracle.com/javase/tutorial/collections/ http://www.seostella.com/ru/article/2012/08/07/kollekcii-collections-v-java-vvedenie.html http://habrahabr.ru/post/128017/](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-18.jpg)
Что почитать о коллекциях
http://www.quizful.net/post/Java-Collections
http://docs.oracle.com/javase/tutorial/collections/
http://www.seostella.com/ru/article/2012/08/07/kollekcii-collections-v-java-vvedenie.html
http://habrahabr.ru/post/128017/
Слайд 20
![Collection http://www.tutorialspoint.com/java/java_collection_interface.htm](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-19.jpg)
Collection
http://www.tutorialspoint.com/java/java_collection_interface.htm
Слайд 21
![List http://www.tutorialspoint.com/java/java_list_interface.htm](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-20.jpg)
List
http://www.tutorialspoint.com/java/java_list_interface.htm
Слайд 22
![Set http://www.tutorialspoint.com/java/java_set_interface.htm](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-21.jpg)
Set
http://www.tutorialspoint.com/java/java_set_interface.htm
Слайд 23
![SortedSet http://www.tutorialspoint.com/java/java_sortedset_interface.htm](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-22.jpg)
SortedSet
http://www.tutorialspoint.com/java/java_sortedset_interface.htm
Слайд 24
![Queue http://tutorials.jenkov.com/java-collections/queue.html](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-23.jpg)
Queue
http://tutorials.jenkov.com/java-collections/queue.html
Слайд 25
![Deque http://tutorials.jenkov.com/java-collections/deque.html](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-24.jpg)
Deque
http://tutorials.jenkov.com/java-collections/deque.html
Слайд 26
![ArrayList, LinkedList https://git.io/vKTnJ](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-25.jpg)
ArrayList, LinkedList
https://git.io/vKTnJ
Слайд 27
![List Iterator https://git.io/vKTlC http://www.tutorialspoint.com/java/java_using_iterator.htm http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html http://www.golovachcourses.com/collections-iterator/ http://habrahabr.ru/post/84184/](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-26.jpg)
List Iterator
https://git.io/vKTlC
http://www.tutorialspoint.com/java/java_using_iterator.htm
http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html
http://www.golovachcourses.com/collections-iterator/
http://habrahabr.ru/post/84184/
Слайд 28
![HashSet, LinkedSet, TreeSet https://git.io/vKTnp](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-27.jpg)
HashSet, LinkedSet, TreeSet
https://git.io/vKTnp
Слайд 29
![ArrayDeque https://git.io/vKTcn](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-28.jpg)
ArrayDeque
https://git.io/vKTcn
Слайд 30
![EnumSet https://git.io/vKTWL](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-29.jpg)
EnumSet
https://git.io/vKTWL
Слайд 31
![User objects in collection https://git.io/vKTWR](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-30.jpg)
User objects in collection
https://git.io/vKTWR
Слайд 32
![HashMap, TreeMap https://git.io/vKT8m http://www.quizful.net/post/Using-Map-in-Jave http://developer.alexanderklimov.ru/android/java/map.php http://developer.alexanderklimov.ru/android/java/hashmap.php](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-31.jpg)
HashMap, TreeMap
https://git.io/vKT8m
http://www.quizful.net/post/Using-Map-in-Jave
http://developer.alexanderklimov.ru/android/java/map.php
http://developer.alexanderklimov.ru/android/java/hashmap.php
Слайд 33
![TreeSet Comparator https://git.io/vKT8S](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-32.jpg)
TreeSet Comparator
https://git.io/vKT8S
Слайд 34
![Map Comparator https://git.io/vKT44](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-33.jpg)
Map Comparator
https://git.io/vKT44
Слайд 35
![Практика Создать коллекцию TreeSet для объектов типа Student. Сделать несколько](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-34.jpg)
Практика
Создать коллекцию TreeSet для объектов типа Student. Сделать несколько компараторов
для сортировки студентов внутри коллекции по разным критериям (средний балл, имя по возрастанию, фамилия по убыванию). Применить компараторы (или лямбды).
Слайд 36
![Алгоритмы Collections https://git.io/vKT4V Reverse order Sort Shuffle Min Max](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-35.jpg)
Алгоритмы Collections
https://git.io/vKT4V
Reverse order
Sort
Shuffle
Min
Max
Слайд 37
![Алгоритмы Arrays Sort Fill BinarySearch CopyOf Equals AsList ToString](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-36.jpg)
Алгоритмы Arrays
Sort
Fill
BinarySearch
CopyOf
Equals
AsList
ToString
Слайд 38
![Legacy Collections Vector Stack HashTable Dictionary Properties BitSet](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-37.jpg)
Legacy Collections
Vector
Stack
HashTable
Dictionary
Properties
BitSet
Слайд 39
![Vector https://git.io/vKTBH](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-38.jpg)
Vector
https://git.io/vKTBH
Слайд 40
![Stack https://git.io/vKTRO](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-39.jpg)
Stack
https://git.io/vKTRO
Слайд 41
![Properties https://git.io/vKT03](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-40.jpg)
Properties
https://git.io/vKT03
Слайд 42
![BitSet https://git.io/vKI9v](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-41.jpg)
BitSet
https://git.io/vKI9v
Слайд 43
![Коллекции в Android https://developer.android.com/reference/java/util/Collections.html https://proglib.io/p/data-structures/](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-42.jpg)
Коллекции в Android
https://developer.android.com/reference/java/util/Collections.html
https://proglib.io/p/data-structures/
Слайд 44
![Guava https://github.com/google/guava/wiki/Release19 https://github.com/google/guava/wiki Практика: качаем библиотеку, подключаем к проекту](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-43.jpg)
Guava
https://github.com/google/guava/wiki/Release19
https://github.com/google/guava/wiki
Практика: качаем библиотеку, подключаем к проекту
Слайд 45
![java.util.concurrent https://habrahabr.ru/company/luxoft/blog/157273/ http://www.ibm.com/developerworks/ru/library/j-jtp07233/ http://javacore.ru/topic/36-core-multithreading-synchronization.htm](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-44.jpg)
java.util.concurrent
https://habrahabr.ru/company/luxoft/blog/157273/
http://www.ibm.com/developerworks/ru/library/j-jtp07233/
http://javacore.ru/topic/36-core-multithreading-synchronization.htm
Слайд 46
![Уроки по Java https://nuancesprog.ru/p/2334 https://www.youtube.com/playlist?list=PL0lO_mIqDDFUzG5WOCUVmqx4CBW2qIulV](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/278851/slide-45.jpg)
Уроки по Java
https://nuancesprog.ru/p/2334
https://www.youtube.com/playlist?list=PL0lO_mIqDDFUzG5WOCUVmqx4CBW2qIulV