воскресенье, 3 января 2016 г.

Java Collections (Коллекции в Java) Introduction


В Java существует такое понятие, как Collections API.
Это первая статья из цикла, составляющего небольшой tutorial по коллекциям в Java. Здесь, я попробую дать представление, что это такое и для чего это нужно.

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

Коллекция (или же контейнер) - это объект, который группирует другие объекты в единое целое. Коллекции используются для хранения, поиска и обработки данных, которые в ней находятся, а также представляют возможность обращения к ним.

Примеры использования коллекций: список контактов в телефонном справочнике, список товаров в корзине покупателя.



Рассмотрим детальней Collections в Java

Большинство коллекций Java находятся в пакете java.util. Java также имеет множество конкурентных (потокобезопасных) коллекций в пакете java.util.concurrent. (этот материал выходит за рамки данной статьи, и будет опубликован в будущем)

Что такое Collections Framework ?

Это универсальная архитектура для представления и управления коллекциями. В ее состав входит следующее:
  • Интерфейсы - это абстрактные типы данных, которые представляют коллекции. Интерфейсы позволяют манипулировать коллекциями независимо от деталей их реализации.
  • Имплементация - это конкретная реализация коллекции.
  • Алгоритмы - это методы, которые выполняют полезные вычисления, такие как поиск и сортировка, на объектах, которые реализуют интерфейсы коллекций.


Базовые интерфейсы коллекций.


Выделяют две группы: Collection и Map. Оба этих интерфейса входят в состав Collection Framework. О них пойдет речь ниже.
На схеме графическое представление иерархии интерфейсов коллекций

Java Collections


Итератор


Iterable<E> - один из базовых интерфейсов коллекций. Интерфейс Collection<E> наследуется от него.

Этот интерфейс предоставляет возможность использовать коллекции в for each цикле
Ниже приведен пример кода:


List list = new ArrayList();
for(Object o : list){
    //выполняем действия с объектом о;    
}

Сам интерфейс Itarable возвращает нам интерфейс Iterator который реализует одноименный шаблон проектирования

Выгладит он следующим образом:

public interface Iterable {
  public Iterator iterator();    
}

Collection


java.util.Collection - корневой интерфейс коллекций. Его реализует и используют все коллекции (кроме Map, который имеют свою иерархию). Некоторые коллекции позволяют дублировать элементы, некоторые имеют порядок, а некоторые нет. Collection определяет общий набор операций для всех реализаций коллекций. Он используется как тип данных для передачи, манипулирования и обозначения типа коллекции, когда необходимо максимально абстрагировать данные.
Следующие интерфейсы наследуются от Collection:

  • List - упорядоченная коллекция, элементы которой могут повторятся
  • Set - коллекция, которая не допускает дублирования элементов
  • Queue - реализация абстрактного типа данных, которая кроме основных операций Collection позволяет вставлять, удалять и просматривать элементы
  • Deque - двусвязная очередь элементы в которой можно добавлять/удалять как в начало так и в конец

Map


java.util.Map - это объект который мапит (связывает) ключи с значением. В мапе не могут содержатся дубликаты ключей. Она предоставляет базовые операции : вставка (put), получение элемента (get), удаление (remove), проверить есть ли ключ (containsKey), есть ли значение (containsValue), размер (size), и есть ли элементы в мапе (empty).
Так же мапа позволяет получить нам коллекции всех ее ключей или значений.

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

Использованные в статье материалы:

http://tutorials.jenkov.com/java-collections/index.html
https://docs.oracle.com/javase/tutorial/collections/TOC.html

Комментариев нет:

Отправить комментарий