1. www.sharkon.kz
КОНТЕЙНЕРЫ
И
ХРАНЕНИЕ ОБЪЕКТОВ
Нефёдов Константин
2. Основные концепции
www.sharkon.kz
Коллекция Карта
набор пар объектов «ключ-
группа отдельных элементов,
значение», с возможностью
сформированная по некоторым
выборки по ключу
правилам
List (список) ArrayList
Set (множество) Map (ассоциативный
массив)
Queue (очередь)
ApplesAndOrangesWithoutGenerics.java
4. Параметризованные
и
www.sharkon.kz
типизованные контейнеры
List<Apple> apples = new ArrayList<Apple>();
ApplesAndOrangesWithGenerics.java
5. Добавление групп элементов
www.sharkon.kz
Collection<Integer> collection =
new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));
Integer[] moreInts = { 6, 7, 8, 9, 10 };
collection.addAll(Arrays.asList(moreInts));
// Работает намного быстрее, но таким способом
// невозможно сконструировать Collection:
Collections.addAll(collection, 11, 12, 13, 14, 15);
Collections.addAll(collection, moreInts);
// Produces a list "backed by" an array:
List<Integer> list = Arrays.asList(16, 17, 18, 19, 20);
list.set(1, 99);// Можно - изменение элемента
// list.add(21); // Ошибка времени выполнения - нижележащий
// массив не должен изменяться в размерах
7. www.sharkon.kz List
Базовый контейнер ArrayList, оптимизированный для
произвольного доступа к элементам,
но с относительно медленнными операциями вставки
(удаления) элементов в середине списка.
Контейнер LinkedList, оптимизированный для
последовательного доступа, с быстрыми операциями
вставки (удаления) в середине списка; Произвольный
доступ к элементам LinkedList выполняется относительно
медленно, но по широте возможностей он превосходит ArrayList.
8. Итераторы
www.sharkon.kz
Итератор — это объект, обеспечивающий перемещение
по последовательности объектов с выбором каждого объекта
этой последовательности, при этом программистуклиенту
не надо знать или заботиться о лежащей в ее основе
структуре
Iterator Listlterator
SimpleIteration.java
13. Collection и Iterator
www.sharkon.kz
Collection — корневой интерфейс, описывающий общую
функциональность всех последовательных контейнеров.
Его можно рассматривать как «вторичный интерфейс»,
появившийся вследствие сходства между другими
интерфейсами. Кроме того, класс java.util.AbstractCollection
предоставляет реализацию Collection по умолчанию,
поэтому вы можете создать новый подтип AbstractCollection
без избыточного дублирования кода.
InterfaceVsIterator.java
14. Синтаксис foreach и итераторы
www.sharkon.kz
Collection<String> cs = new LinkedList<String>();
Collections.addAll(cs,"Take the long way home".split(" "));
for(String s : cs) System.out.print("'" + s + "' ");
ForEachCollections.java