Программирование на языке Ruby
Шрифт:
8.2.14.
Часто в массиве или матрице заполнена лишь небольшая часть элементов. Можно хранить их как обычно, но такое расходование памяти неэкономно. Хэш позволяет хранить только реально существующие значения.
В следующем примере предполагается, что несуществующие значения по умолчанию равны нулю:
Ясно, что обычный массив в таком случае содержал бы более 9000 неиспользуемых элементов, что не всегда приемлемо.
А если нужно реализовать разреженную матрицу размерности два или более? В этом случае можно было бы использовать массивы в качестве ключей:
Здесь обычная матрица содержала бы миллиарды элементов.
8.2.15. Реализация хэша с повторяющимися ключами
Приверженцы математической строгости скажут, что хэш с повторяющимися ключами — вообще не хэш. Не станем спорить. Называйте как хотите, но на практике бывают случаи, когда нужна структура данных, обладающая гибкостью и удобством хэша и в то же время содержащая ключи-дубликаты.
В листинге 8.1 предложено частичное решение. Оно неполно по двум причинам. Во-первых, мы не стали реализовывать всю желательную функциональность, ограничившись лишь некоторым достаточно представительным подмножеством. Во-вторых, внутреннее устройство Ruby таково, что литеральный хэш всегда является экземпляром класса Hash, и, хотя мы наследуем классу Hash, литерал все равно не сможет содержать повторяющихся ключей (мы подумаем об этом позже).
Золоченая цепь
1. Королевские Клинки
Фантастика:
фэнтези
рейтинг книги
Лесной исчезнувший мир. Очерки петербургского предместья
Документальная литература:
биографии и мемуары
рейтинг книги
Месть изгоя. Книга 3. Вариант О.Рыбаченко
рейтинг книги
Переписка и деловые бумаги
Документальная литература:
публицистика
рейтинг книги
Камень. Книга 4
4. Камень
Фантастика:
боевая фантастика
рейтинг книги
Линия судьбы
Любовные романы:
современные любовные романы
рейтинг книги
Великое избавление
1. Инспектор Линли
Детективы:
классические детективы
рейтинг книги
Каштаны на память
Проза:
военная проза
рейтинг книги
"Фантастика 2023-193". Компиляция. Книги 1-24
Фантастика 2023. Компиляция
Фантастика:
фэнтези
боевая фантастика
попаданцы
рейтинг книги
Случайности Судьбы. О том, как все начиналось…
Фантастика:
фэнтези
юмористическое фэнтези
ироническое фэнтези
рейтинг книги