ArrayList Bidimensional Java
-
Upload
fabio-splendor -
Category
Documents
-
view
31 -
download
1
Transcript of ArrayList Bidimensional Java
23/7/2014 Como fazer ArrayList bidimensional? - Javafree: O fórum de Java que mais cresce
http://javafree.uol.com.br/topic-891492-Como-fazer-ArrayList-bidimensional.html 1/4
Assine 0800 703 3000 SAC Bate-papo E-mail Notícias Esporte Entretenimento Mulher Shopping BUSCAR
Mo5kaPosts:21
staroskiPosts:3763
thiagovpalmeirPosts:1451
staroskiPosts:3763
Página Inicial do Fórum > Java Básico
Como fazer ArrayList bidimensional?
Seja bem vindo ao Fórum do JavaFree.org Aqui você irá encontrar respostas para TUDO o que você precisa sobre java.Deseja participar? Crie sua conta ou efetue seu login
Pesquisar ÍNDICE | NOTÍCIAS | TUTORIAIS | RECENTES | LOGIN | REGISTRE-SE
0 0Curtir
easy Java Magazine 41
Simplificação das Threads: Processamento
paralelo de modo eficiente e síncrono
Java Magazine 129
Big Data com Hadoop: simplificando soluções
MapReduce na prática
Publicado em: 15/07/2013 16:50:35
Olá,
Estou fazendo um jogo do tipo "warcraft"/"age of empires" e tenho que gerenciar a posição das
unidades(objeto Unidade) nas cordenadas X e Y.
Pensei em usar um ArrayList bidimensional, onde as cordenadas seriam os indices, mas eu não sei como
fazer isso, alguem poderia me mostrar como iniciar, ler e regravar um array assim?
LEMBRANDO que eu quero armazenar no ArrayList SOMENTE as unidades ativas...cordenadas vazias
serão ignoradas já que a area é muito grande(por isso não posso usar arrays normal de tamanho fixo).
Obrigado.
Publicado em: 15/07/2013 18:34:17
Assim como um array bi-dimensional nada mais é do que um array de arrays, uma lista bidimensional
pode ser representada por uma lista de listas:
List<List<TipoDeDado>> listaDeListas = new ArrayList<List<TipoDeDado>>();
_________________
Ricardo Artur Staroski, OCP-JP
Blumenau - SC
Conheça minhas APIs e respectiva documentação
Publicado em: 15/07/2013 22:42:59
Veja esse artigo, talvez possa te ajudar...
http://www.devmedia.com.br/trabalhando-com-arrays-em-java/25530
_________________
Site: http://www.varallos.com.br
0
23/7/2014 Como fazer ArrayList bidimensional? - Javafree: O fórum de Java que mais cresce
http://javafree.uol.com.br/topic-891492-Como-fazer-ArrayList-bidimensional.html 2/4
Mo5kaPosts:21
Grupo Java Brazuka: http://www.facebook.com/groups/421210044593467/
FanPage: http://www.facebook.com/varallosweb
Space Devmedia: http://www.devmedia.com.br/ThiagoVaralloPalmeira
Twitter: http://twitter.com/varallos1
Youtube: http://www.youtube.com/user/varallos1
Varallo´s Fóruns: http://www.varallos.com.br/foruns
Publicado em: 15/07/2013 18:34:17
Parando pra pensar, acredito que seja mais otimizado você utilizar dois Maps ao invés de duas Lists.
Criei uma classe que implementa a funcionalidade de uma matriz bidimensional, vejá só:
Código de teste:
public class Teste { public static void main(String[] args) { // criando uma matriz dinâmica de String, poderia ser de qualquer outra coisa MatrizDinamica<String> matriz = new MatrizDinamica<String>(); int linhas = 10; int colunas = 5; for (int i = 0; i < linhas; i++) { for (int j = 0; j < colunas; j++) { String elemento = "linha: " + i + ", coluna: " + j; matriz.set(i, j, elemento); // inserindo o elemento } } for (int i = 0; i < linhas; i++) { for (int j = 0; j < colunas; j++) { String elemento = matriz.get(i, j); // obtendo o elementos System.out.println(elemento); } } } }
Agora a implementação da matriz dinamica:
import java.util.*; public class MatrizDinamica<T> { private final Map<Integer, Map<Integer, T>> elementos = new HashMap<Integer, Map<Integer, T>>(); public void set(int linha, int coluna, T elemento) { Map<Integer, T> colunas = getColunas(linha); Integer chave = Integer.valueOf(coluna); if (elemento != null) { colunas.put(chave, elemento); } else { colunas.remove(chave); } } public T get(int linha, int coluna) { Map<Integer, T> colunas = getColunas(linha); Integer chave = Integer.valueOf(coluna); T elemento = colunas.get(chave); return elemento; } private Map<Integer, T> getColunas(int linha) { int chave = Integer.valueOf(linha); Map<Integer, T> colunas = elementos.get(chave); if (colunas == null) { colunas = new HashMap<Integer, T>(); elementos.put(chave, colunas); } return colunas; } }
_________________
Ricardo Artur Staroski, OCP-JP
Blumenau - SC
Conheça minhas APIs e respectiva documentação
23/7/2014 Como fazer ArrayList bidimensional? - Javafree: O fórum de Java que mais cresce
http://javafree.uol.com.br/topic-891492-Como-fazer-ArrayList-bidimensional.html 3/4
Relacionados
staroskiPosts:3763
thiagovpalmeirPosts:1451
leonardooliveiraPosts:1101
staroskiPosts:3763
Publicado em: 15/07/2013 16:50:35
staroskiParando pra pensar, acredito que seja mais otimizado você utilizar dois Maps ao invés de duas Lists.
Cara nossa, valew, ajudou muito...só uma duvida, pq o hashmap é melhor que o arraylist neste caso
especifico?
Ah...e desculpe a ignorancia em hashmap, nunca tinha usado...como faço para destruir um elemento? E
para mover um elemento para outro indice?
Valew
Publicado em: 15/07/2013 18:34:17
A diferença entre um List e um Map é que um List guarda seus elementos em índices e um Map utiliza
chaves.
No seu caso, as chaves vão ser o número da linha num Map e o número da coluna em outro Map.
Para remover um elemento você utiliza o método remove, se você olhar a implementação que fiz, isso
acontece no método set da classe MatrizDinamica, se tu setar um elemento como null, o elemento que
estava naquela coordenada, vai ser removido.
Se você quisesse usar List teria que ter uma estrutura de dados propria pra poder mapear a linha e
coluna do objeto inserido, daria um trabalhão, imagina que sua lista tenha 10 elementos e você quer
inserir um na posição 20, terias que inserir 9 elementos dummy para poder aí inserir no índice 20 o
objeto que você quer.
Com o Map não acontece isso, o Map não é uma lista encadeada, ele é um par chave-valor.
_________________
Ricardo Artur Staroski, OCP-JP
Blumenau - SC
Conheça minhas APIs e respectiva documentação
Publicado em: 15/07/2013 22:42:59
Bacana muito bem bolado o código...
_________________
Site: http://www.varallos.com.br
Grupo Java Brazuka: http://www.facebook.com/groups/421210044593467/
FanPage: http://www.facebook.com/varallosweb
Space Devmedia: http://www.devmedia.com.br/ThiagoVaralloPalmeira
Twitter: http://twitter.com/varallos1
Youtube: http://www.youtube.com/user/varallos1
Varallo´s Fóruns: http://www.varallos.com.br/foruns
Publicado em: 17/07/2013 13:46:17
Monstruoso esse codigo!!!
Publicado em: 15/07/2013 18:34:17
leonardooliveiraMonstruoso esse codigo!!!
Monstruoso porque?
Não vejo monstruosidade em um método set para setar o elemento numa posição e um método get para
obter o elemento de determinada posição...
_________________
Ricardo Artur Staroski, OCP-JP
Blumenau - SC
Conheça minhas APIs e respectiva documentação
23/7/2014 Como fazer ArrayList bidimensional? - Javafree: O fórum de Java que mais cresce
http://javafree.uol.com.br/topic-891492-Como-fazer-ArrayList-bidimensional.html 4/4
Índice do forum -> Java Básico
Powered by JavaBB 0.99
Classe Calculadora
http://javafree.uol.com.br/topic-865464-Classe-Calculadora.html
os exercicios 1,2,e 3 estao funcionando perfeitamente, agora montei o ex 4 para chamar algum
dentro dos anteriores
http://javafree.uol.com.br/topic-893862-os-exercicios-12e-3-estao-funcionando-
perfeitamente-agora-montei-o-ex-4-para-chamar-algum-dentro-dos-anteriores.html
Povoar Combobox com nomes de arquivos do diretório.
http://javafree.uol.com.br/topic-893864-Povoar-Combobox-com-nomes-de-arquivos-do-
diretorio.html
Banco de Dados Bluej
http://javafree.uol.com.br/topic-893858-Banco-de-Dados-Bluej.html
cannot find symbol
http://javafree.uol.com.br/topic-893861-cannot-find-symbol.html