Matriz Esparsa

Senhores,

alguem já desenvolveu alguma coisa que utilizasse algo parecido com uma planilha em que cada célula pode ter uma informação de natureza diferenciada (tipo de dado/classe)

Qual a melhor forma de representar?
utilizando um ArrayList de ArrayList de Célula?
ou um HashMap <CelulaEndereco,Celula>

obrigado pelas opniões.

Oi Dieval,

Oi já desolvi sim.

É uma matriz de tamanho fixo? Nesse caso, acho que um array comum deve ser suficiente.

Não era o meu caso. Acabei usando ArrayList de ArrayList mesmo. Mas encapsulei tudo dentro de uma classe genérica Matrix<E>.

PS: Por acaso você é o prof. Dieval da ET/UFPR? Sou formado em Proc. de Dados lá, até concorri com o Assistente de Classe lá na Fundação Liberato, na época em Delphi, nos idos de 98 (por aí)…

No seu caso, dependendo de quão esparsa seja a matriz, você pode usar um Map<CelulaEndereco,Celula> (pode ser um TreeMap ou HashMap, o que você achar melhor.
Eu gosto de usar TreeMap porque as coisas ficam naturalmente ordenadas, mas no seu caso (uma planilha) isso não é necessário - você já sabe o valor mínimo e máximo das coordenadas, e seria mais rápido usar um HashMap mesmo.

Um ArrayList de ArrayList seria interessante se a matriz for “pouco esparsa” - ou seja, há poucos elementos faltantes.

Ah sim, na época até cheguei a considerar a idéia de usar um Map. Fiquei tentado pois provavelmente ocupa menos memória e deve ser tão rápido quanto uma matriz.

Mas na época achei que rebuscava um pouco na hora de fazer iteradores. Acabei desistindo da idéia, pois no meu caso, mesmo variando, a matriz não deveria ficar tão grande assim.

Tem razão Thingol.

Acho que com uma matriz muito esparsa o Map deve ser uma solução melhor mesmo. Não era o meu caso na época. A matriz era esparsa, mas nem tanto.

Na verdade, pensando no problema hoje, acho que é o caminho que seguiria. Dieval, o que mais essa matriz deverá fazer? Só guardar valores ou você pensa em iteradores específicos?

Em uma planilha (Excel, OpenOffice etc.) clássica é preferível usar um ArrayList de ArrayList, porque usualmente elas são muito pouco esparsas - o que ocorre, normalmente, é que há linhas ou colunas vazias.

[quote=ViniGodoy]Oi Dieval,

PS: Por acaso você é o prof. Dieval da ET/UFPR? Sou formado em Proc. de Dados lá, até concorri com o Assistente de Classe lá na Fundação Liberato, na época em Delphi, nos idos de 98 (por aí)…

[/quote]

Sou eu mesmo.

Pois é pessoal,

o problema começa por aí, é muito dificil dizer o quanto esparsa ela será…

vou fazer uns testes…

vw

Aconselho também a usar um HashMap , faço importação de uma planilhia Excel com inumeras informações e resultado com HashMap foi satisfatório e utilize tbm a classe StringTokenizer