23/7/2014 Como fazer ArrayList bidimensional?
- Javafree: O fórum de Java que mais cresce
Assine 0800 703 3000 SAC Bate-papo E-mail Notícias Esporte Entretenimento Mulher Shopping BUSCAR
Seja bem vindo ao Fórum do [Link]
Aqui você irá encontrar respostas para TUDO o que você precisa sobre java.
Deseja participar? Crie sua conta ou efetue seu login
ÍNDICE | NOTÍCIAS | TUTORIAIS | RECENTES | LOGIN | REGISTRE-SE
Pesquisar
Página Inicial do Fórum > Java Básico
Como fazer ArrayList bidimensional?
0 0 Curtir 0
easy Java Magazine 41 Java Magazine 129
Simplificação das Threads: Processamento Big Data com Hadoop: simplificando soluções
paralelo de modo eficiente e síncrono MapReduce na prática
Publicado em: 15/07/2013 [Link]
Olá,
Mo5ka
Posts:21 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).
staroski Obrigado.
Posts:3763
Publicado em: 15/07/2013 [Link]
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>>();
thiagovpalmeir
Posts:1451
_________________
Ricardo Artur Staroski, OCP-JP
Blumenau - SC
Conheça minhas APIs e respectiva documentação
Publicado em: 15/07/2013 [Link]
Veja esse artigo, talvez possa te ajudar...
[Link]
staroski
Posts:3763 _________________
Site: [Link]
[Link] 1/4
23/7/2014 Como fazer ArrayList bidimensional? - Javafree: O fórum de Java que mais cresce
Grupo Java Brazuka: [Link]
FanPage: [Link]
Space Devmedia: [Link]
Twitter: [Link]
Youtube: [Link]
Varallo´s Fóruns: [Link]
Publicado em: 15/07/2013 [Link]
Parando pra pensar, acredito que seja mais otimizado você utilizar dois Maps ao invés de duas Lists.
Mo5ka
Posts:21 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;
[Link](i, j, elemento); // inserindo o elemento
}
}
for (int i = 0; i < linhas; i++) {
for (int j = 0; j < colunas; j++) {
String elemento = [Link](i, j); // obtendo o elementos
[Link](elemento);
}
}
}
}
Agora a implementação da matriz dinamica:
import [Link].*;
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 = [Link](coluna);
if (elemento != null) {
[Link](chave, elemento);
} else {
[Link](chave);
}
}
public T get(int linha, int coluna) {
Map<Integer, T> colunas = getColunas(linha);
Integer chave = [Link](coluna);
T elemento = [Link](chave);
return elemento;
}
private Map<Integer, T> getColunas(int linha) {
int chave = [Link](linha);
Map<Integer, T> colunas = [Link](chave);
if (colunas == null) {
colunas = new HashMap<Integer, T>();
[Link](chave, colunas);
}
return colunas;
}
}
_________________
Ricardo Artur Staroski, OCP-JP
Blumenau - SC
Conheça minhas APIs e respectiva documentação
[Link] 2/4
23/7/2014 Como fazer ArrayList bidimensional? - Javafree: O fórum de Java que mais cresce
Publicado em: 15/07/2013 [Link]
staroski
Parando pra pensar, acredito que seja mais otimizado você utilizar dois Maps ao invés de duas Lists.
staroski Cara nossa, valew, ajudou muito...só uma duvida, pq o hashmap é melhor que o arraylist neste caso
Posts:3763
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 [Link]
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.
thiagovpalmeir
Posts:1451
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 [Link]
Bacana muito bem bolado o código...
_________________
leonardooliveira
Posts:1101 Site: [Link]
Grupo Java Brazuka: [Link]
FanPage: [Link]
Space Devmedia: [Link]
Twitter: [Link]
Youtube: [Link]
Varallo´s Fóruns: [Link]
Publicado em: 17/07/2013 [Link]
Monstruoso esse codigo!!!
staroski
Posts:3763 Publicado em: 15/07/2013 [Link]
leonardooliveira
Monstruoso 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
Relacionados obter o elemento de determinada posição...
_________________
Ricardo Artur Staroski, OCP-JP
Blumenau - SC
Conheça minhas APIs e respectiva documentação
[Link] 3/4
23/7/2014 Como fazer ArrayList bidimensional? - Javafree: O fórum de Java que mais cresce
Classe Calculadora
[Link]
os exercicios 1,2,e 3 estao funcionando perfeitamente, agora montei o ex 4 para chamar algum
dentro dos anteriores
[Link]
[Link]
Povoar Combobox com nomes de arquivos do diretório.
[Link]
[Link]
Banco de Dados Bluej
[Link]
cannot find symbol
[Link]
Índice do forum -> Java Básico
Powered by JavaBB 0.99
[Link] 4/4