# Класс Map

(PECL ds >= 1.0.0)

## Введение

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

## Сильные стороны

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

## Слабые стороны

- Не может быть сконвертирована в массив, если в качестве ключей используются объекты.

## Обзор класса

class Ds\Map implements Ds\Collection, ArrayAccess {
/* Константы */
const int MIN_CAPACITY = 8;
/* Методы */
public function allocate(int `$capacity`): void
public function apply(callable `$callback`): void
public function capacity(): int
public function clear(): void
public function copy(): Ds\Map
public function diff(Ds\Map `$map`): Ds\Map
public function filter(callable `$callback` = ?): Ds\Map
public function first(): Ds\Pair
public function get(mixed `$key`, mixed `$default` = ?): mixed
public function hasKey(mixed `$key`): bool
public function hasValue(mixed `$value`): bool
public function intersect(Ds\Map `$map`): Ds\Map
public function isEmpty(): bool
public function keys(): Ds\Set
public function ksort(callable `$comparator` = ?): void
public function ksorted(callable `$comparator` = ?): Ds\Map
public function last(): Ds\Pair
public function map(callable `$callback`): Ds\Map
public function merge(mixed `$values`): Ds\Map
public function pairs(): Ds\Sequence
public function put(mixed `$key`, mixed `$value`): void
public function putAll(mixed `$pairs`): void
public function reduce(callable `$callback`, mixed `$initial` = ?): mixed
public function remove(mixed `$key`, mixed `$default` = ?): mixed
public function reverse(): void
public function reversed(): Ds\Map
public function skip(int `$position`): Ds\Pair
public function slice(int `$index`, int `$length` = ?): Ds\Map
public function sort(callable `$comparator` = ?): void
public function sorted(callable `$comparator` = ?): Ds\Map
public function sum(): int|float
public function toArray(): array
public function union(Ds\Map `$map`): Ds\Map
public function values(): Ds\Sequence
public function xor(Ds\Map `$map`): Ds\Map
}

## Предопределённые константы

`Ds\Map::MIN_CAPACITY`

## Список изменений

Версия | Описание
--- | ---
PECL ds 1.3.0 | Теперь класс реализует интерфейс ArrayAccess.
PECL ds 1.2.0 | Значение константы `Ds\Map::MIN_CAPACITY` изменено с 16 на 8.

## Содержание

- Ds\Map::allocate — Выделяет необходимое количество памяти под требуемую вместимость
- Ds\Map::apply — Обновление всех значений применением к ним переданной callback-функции
- Ds\Map::capacity — Возвращает текущую вместимость
- Ds\Map::clear — Удаляет все значения из коллекции
- Ds\Map::__construct — Создаёт новый экземпляр
- Ds\Map::copy — Возвращает поверхностную копию коллекции
- Ds\Map::count — Возвращает количество элементов коллекции
- Ds\Map::diff — Создаёт новую коллекцию пар с элементами, ключей которых нет в другой коллекции пар
- Ds\Map::filter — Создаёт новую коллекцию пар из элементов, выбранных с помощью заданной callback-функции
- Ds\Map::first — Возвращает первый элемент коллекции
- Ds\Map::get — Возвращает значение по ключу
- Ds\Map::hasKey — Проверяет, содержит ли коллекция заданный ключ
- Ds\Map::hasValue — Проверяет, содержит ли коллекция заданное значение
- Ds\Map::intersect — Создаёт новую коллекцию пар, созданную пересечением с другой коллекцией пар
- Ds\Map::isEmpty — Проверяет, пуста ли коллекция
- Ds\Map::jsonSerialize — Возвращает коллекцию в JSON-представлении
- Ds\Map::keys — Возвращает набор ключей коллекции
- Ds\Map::ksort — Сортирует текущую коллекцию по ключам
- Ds\Map::ksorted — Возвращает копию коллекции, отсортированной по ключам
- Ds\Map::last — Возвращает последнюю пару коллекции
- Ds\Map::map — Возвращает результат применения callback-функции ко всем значениям коллекции
- Ds\Map::merge — Возвращает результат добавления всех заданных элементов в коллекцию
- Ds\Map::pairs — Возвращает последовательность, содержащую все пары коллекции
- Ds\Map::put — Установка значения по заданному ключу
- Ds\Map::putAll — Связывает с коллекцией все пары ключ-значение из объекта класса traversable или массива
- Ds\Map::reduce — Уменьшает коллекцию до одного значения, используя callback-функцию
- Ds\Map::remove — Удаляет и возвращает значение по ключу
- Ds\Map::reverse — Переворачивает текущую коллекцию
- Ds\Map::reversed — Возвращает перевёрнутую копию коллекции
- Ds\Map::skip — Возвращает пару по индексу позиции
- Ds\Map::slice — Возвращает подмножество коллекции из заданного диапазона
- Ds\Map::sort — Сортирует коллекцию по значениям
- Ds\Map::sorted — Возвращает отсортированную по значению копию коллекции
- Ds\Map::sum — Возвращает сумму всех значений коллекции
- Ds\Map::toArray — Преобразовывает коллекцию в массив (array)
- Ds\Map::union — Создаёт новую коллекцию пар из элементов двух коллекций
- Ds\Map::values — Возвращает последовательность значений коллекции
- Ds\Map::xor — Создаёт новую коллекцию пар из элементов, которые есть в одной из коллекций, но не в обеих одновременно

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open