К счастью, требования не такие обширные, как к продуктам ИТ-гигантов, да и UI-часть пока за скобками, но модель представления в памяти всё же под вопросом. Понятно, что никакая двумерная коллекция — будь то массив, нагромождение `Map`ов или список списков -- не подойдут, потому что будут крайне неэффективно расходовать память, ведь ячейки могут быть заполнены как попало и разбросаны по большому листу. Вместе с тем нужно уметь работать с диапазонами, поддерживать группировку (слияние) ячеек, поиск/вставку/удаление, т.е. нужна одновременно и гибкая, и производительная, и ресурсо-экономная структура данных для больших таблиц🧩
Сам я склонялся к применению разреженных матриц, но решил поискать альтернативы, и вот что нашлось (в т.ч. коллегами):
— ChatGPT сначала предлагала делать на
TreeMap;— потом всё же прониклась и тоже заговорила про матрицы, например, на библиотеке UJMP;
— мумбайские студенты взвешивают разные варианты, но вроде как приходят к выводу об оптимальности разреженных матриц;
— в исходниках OpenOffice чёрт ногу сломит, но как будто бы и они на том же пути.
Интересно, а есть ли другие подходы? 🤔