многомерный разреженный массив в kotlin (jvm, js)?

#java #kotlin #data-structures #jvm

#java #kotlin #структуры данных #jvm

Вопрос:

Я ищу библиотеку, реализующую разреженный многомерный массив для kotlin на jvm и js. В android.utils есть реализация разреженного массива, но можно ли ее использовать с JVM / JS? Или в основной библиотеке что-то есть, и я просто пропускаю это?

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

1. Какие свойства вы ищете в этой реализации разреженного массива? Обычно хэш-карта делает свое дело. Вы хотите повысить эффективность работы с памятью за счет скорости?

2. он предназначен для обработки положения некоторых объектов в трехмерном пространстве — в основном [x] [y] [z] -> список элементов в заданной позиции.

3. Да, но мой вопрос о том, почему не вложенные хэш-карты? В реализации, на которую вы ссылались, перечислены некоторые преимущества / недостатки по сравнению с хэш-картами, поэтому мне было интересно, какие из них, в частности, вас заинтересовали. У вас может быть a Map<Int, Map<Int, Map<Int, List<Item>>>> , который в основном делал бы то, что вы ищете.

4. возможно, какая-то драматическая чрезмерная разработка?

5. @Joffrey вложенные хэш-карты могут оказаться потребляющими гораздо больше памяти, чем не разреженный массив. В большинстве случаев более эффективным было бы создание выделенного типа ключа, содержащего три int значения, и использование одного плоского HashMap .

Ответ №1:

Как насчет использования пространственного индекса, такого как квадратичные деревья, R-деревья, kd-деревья?

Я не знаю ни о какой библиотеке Kotlin, но если вы можете использовать Java, посмотрите на библиотеку индексов TinSpin. Особенно, если позиции являются целыми числами и / или уникальными, я могу предложить PH-дерево, которое по умолчанию имеет уникальные позиции, но также может использоваться как multimap (просто вставьте карту / список / набор в любую занятую позицию).

Отказ от ответственности: самореклама — я являюсь разработчиком TinSpin, а также PH-дерева.