Percorrer ArrayList Bidimensional

1 resposta
D

Javeiros td bem !!! Como posso Percorrer um ArrayList Bidimensional linha a linha, coluna a coluna…
Conhecer o numero de linhas de ArrayList Bidimensional é simples… Só usar .size()
Eu não queria ficar dando .split() em cada linha pra saber o numero de colunas da linha…
Se nao houver uma maneira mais elegante, serei obrigado a usar o split sempre !!!
Obrigado !!!

1 Resposta

D

Se a qtd de colunas é fixa, então crie uma estrutura Tabela

class Tabela {
  ArrayList<String[]> linhas = new;
  int qtdColunas;

  Tabela(qtdColunas) {
    this.qtdColunas = qtdColunas;
  }

  void addNovaLinha(String novaLinha) {
    addNovaLinha(novaLinha.split());
  }

  void addNovaLinha(String[] novaLinha) {
    if (novalinha != null) linhas.add(Arrays.copyOf(novaLinha, qtdColunas));
    else linhas.add(new String[qtdColunas]);
  }
  void forEachLinha(BiConsumer<Integer, String[]> consumer) {
    for (int i = 0; i < linhas.size(); i++) {
      consumer.accept(i, linhas.get(i));
    }
  }
}

Para percorrer, use expressão lambda

tabela.forEachLinha((Integer indice, String[] linha) -> {
  println("Linha: " + indice);
  for (int c = 0; c < linha.length; c++) {
    println("Linha: " + indice + " Coluna: " +c + " Valor: " + linha[c]);
  }
};

Se não for fixa, basta remover a qtdColunas no exemplo acima

Criado 23 de julho de 2016
Ultima resposta 23 de jul. de 2016
Respostas 1
Participantes 2