background preloader

Collectoions

Facebook Twitter

Справочник по Java Collections Framework. Данная публикация не является полным разбором или анализом (не покрывает пакет java.util.concurrent).

Справочник по Java Collections Framework

Это, скорее, справочник, который поможет начинающим разработчикам понять ключевые отличия одних коллекций от других, а более опытным разработчикам просто освежить материал в памяти. Что такое Java Collections Framework? Java Collection Framework — иерархия интерфейсов и их реализаций, которая является частью JDK и позволяет разработчику пользоваться большим количесвом структур данных из «коробки». Базовые понятия На вершине иерархии в Java Collection Framework располагаются 2 интерфейса: Collection и Map.

Collection — этот интерфейс находится в составе JDK c версии 1.2 и определяет основные методы работы с простыми наборами элементов, которые будут общими для всех его реализаций (например size(), isEmpty(), add(E e) и др.). Важно также отметить, что эти медоды были реализованы непосредственно в интерфейсе как default-медоды. Map. Collection Pipeline. Collection pipelines are a programming pattern where you organize some computation as a sequence of operations which compose by taking a collection as output of one operation and feeding it into the next.

Collection Pipeline

(Common operations are filter, map, and reduce.) This pattern is common in functional programming, and also in object-oriented languages which have lambdas. This article describes the pattern with several examples of how to form pipelines, both to introduce the pattern to those unfamiliar with it, and to help people understand the core concepts so they can more easily take ideas from one language to another.

The collection pipeline is one of the most common, and pleasing, patterns in software. It's something that's present on the unix command line, the better sorts of OO languages, and gets a lot of attention these days in functional languages. First encounters. 90+ вопросов на собеседование по Java Collection API. Структуры данных в картинках. LinkedList. Приветствую вас, хабражители!

Структуры данных в картинках. LinkedList

Продолжаю начатое, а именно, пытаюсь рассказать (с применением визуальных образов) о том как реализованы некоторые структуры данных в Java. В прошлый раз мы говорили об ArrayList, сегодня присматриваемся к LinkedList. LinkedList — реализует интерфейс List. Является представителем двунаправленного списка, где каждый элемент структуры содержит указатели на предыдущий и следующий элементы. Итератор поддерживает обход в обе стороны. Создание объекта List<String> list = new LinkedList<String>(); Footprint{Objects=2, References=4, Primitives=[int x 2]} Object size: 48 bytes Только что созданный объект list, содержит свойства header и size. header — псевдо-элемент списка.

Header.next = header.prev = header; Добавление элементов list.add("0"); Внутри класса LinkedList существует static inner класс Entry, с помощью которого создаются новые элементы. Каждый раз при добавлении нового элемента, по сути выполняется два шага: 1) создается новый новый экземпляр класса Entry Итоги. Структуры данных в картинках. ArrayList. Приветствую вас, хабралюди!

Структуры данных в картинках. ArrayList

Взбрело мне в голову написать несколько статей, о том как реализованы некоторые структуры данных в Java. Надеюсь, статьи будут полезны визуалам (картинки наше всё), начинающим java-визуалам а также тем кто уже умеет писать new ArrayList(), но слабо представляет что же происходит внутри. Сегодня поговорим о ArrayList-ах ArrayList — реализует интерфейс List. Как известно, в Java массивы имеют фиксированную длину, и после того как массив создан, он не может расти или уменьшаться. 9 главных вопросов о Map в Java / Переводы / InfoJavaRush. Структуры данных в картинках. HashMap. Приветствую вас, хабрачитатели!

Структуры данных в картинках. HashMap

Продолжаю попытки визуализировать структуры данных в Java. В предыдущих сериях мы уже ознакомились с ArrayList и LinkedList, сегодня же рассмотрим HashMap. HashMap — основан на хэш-таблицах, реализует интерфейс Map (что подразумевает хранение данных в виде пар ключ/значение). Ключи и значения могут быть любых типов, в том числе и null. Данная реализация не дает гарантий относительно порядка элементов с течением времени. Создание объекта Map<String, String> hashmap = new HashMap<String, String>(); Footprint{Objects=2, References=20, Primitives=[int x 3, float]} Object size: 120 bytes Новоявленный объект hashmap, содержит ряд свойств: table — Массив типа Entry[], который является хранилищем ссылок на списки (цепочки) значений;loadFactor — Коэффициент загрузки. Структуры данных в картинках. LinkedHashMap. Привет Хабрачеловеки!

Структуры данных в картинках. LinkedHashMap

После затяжной паузы, я попробую продолжить визуализировать структуры данных в Java. В предыдущих статьях были замечены: ArrayList, LinkedList, HashMap. Сегодня заглянем внутрь к LinkedHashMap. Из названия можно догадаться что данная структура является симбиозом связанных списков и хэш-мапов. Действительно, LinkedHashMap расширяет класс HashMap и реализует интерфейс Map, но что же в нем такого от связанных списков? Создание объекта Map<Integer, String> linkedHashMap = new LinkedHashMap<Integer, String>(); Footprint{Objects=3, References=26, Primitives=[int x 4, float, boolean]}size: 160 bytes Только что созданный объект linkedHashMap, помимо свойств унаследованных от HashMap (такие как table, loadFactor, threshold, size, entrySet и т.п.), так же содержит два доп. свойства: header — «голова» двусвязного списка.

Void init() { header = new Entry<K,V>(-1, null, null, null); header.before = header.after = header; } Добавление элементов linkedHashMap.put(1, "obj1"); Итераторы.