Протестировано на небольших матрицах и векторах:
1) sparse vector: getelement, setelement, scalarProduct
2) sparse matrix: getelement, setelement, getcolumn/line, transpose, productWith (векторное произведение)

Осталось протестировать:
1) sparse vector to matrix + все операторы
2) sparse matrix: plusMatrix
Добавил два метода сложения: обычный plus (итерация по всем элементам) и sparcePlus (Итерируемся по ненулевым значениям одной матрицы и кэшируем индексы. Потом итерируемся по второй, проверяем наличие ключей в кэше. Если ключа нет, делаем setElement)