Matrizes e genéricos

Pessoal

Alguém já viu uma classe que implemente o conceito de uma matriz de N dimensões e que use generics?

Eu estava imaginando algo como:

Matrix<Integer> matriz = new Matrix<Integer>(10,15,21,9);

Onde os parâmetros do construtor seriam varargs (inteiros) e informariam quais são as N dimensões da matriz.

Aí teríamos metodos set e get para atribuir e ler valores dela. Todos com varargs nos parâmetros para informar os índices, sendo genéricos os retorno do get e o parâmetro valor do set.

Você poderia escrever uma :stuck_out_tongue:

De fato, não é assustadoramente difícil, mas seria interessante, até por motivos de desempenho, ter especializações dessa classe para os tipos primitivos (int, long, double, float).
Ela não deveria ser implementada internamente como um ArrayList, mas como um array puro (se a matriz não for esparsa), ou de alguma outra maneira se a matriz for esparsa.
Para achar um elemento, no caso de você ter um vetor de 1 dimensão e a matriz não for esparsa, basta fazer aquelas contas de multiplicação e adição (que nos processadores mais modernos ainda são mais rápidas que ficar efetuando N acessos à memória se você fosse usar arrays de arrays).

[quote=thingol]Você poderia escrever uma :stuck_out_tongue:
Para achar um elemento, no caso de você ter um vetor de 1 dimensão e a matriz não for esparsa, basta fazer aquelas contas de multiplicação e adição (que nos processadores mais modernos ainda são mais rápidas que ficar efetuando N acessos à memória se você fosse usar arrays de arrays).
[/quote]

Pois é, eu estava mesmo tentando pensar em um cálculo para isso.
Alguma sugestão?