Сразу: код не смотрел.
Однако по концепции я бы лично не стал выносить toArray() в общий интерфейс, т.к. слабо могу себе представить, где было бы необходимо преобразовывать разряженную матрицу в обычную. Лучше посмотреть сценарии, когда такое преобразование кажется логичным, и вынести в интерфейс операции, которые вынуждают Вас выносить toArray() в общий интерфейс. Для разряженных операций эта операция по определению дорогая, и, IMHO, в реальных задачах от этого не много смысла.