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>
É 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.
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.
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í)…
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