ArrayList Bidimensional Java

4
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 Mo5ka Posts:21 staroski Posts:3763 thiagovpalmeir Posts:1451 staroski Posts: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 0 Curtir 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

Transcript of ArrayList Bidimensional Java

Page 1: 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

Page 2: 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 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

Page 3: 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 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

Page 4: 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 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