Como transformar um Array em um ArrayList?

4 respostas
javaarraylist
D

Estou tentando ler um arquivo CSV. Porém, consigo apenas imprimir na tela o Array(String), já formatado pelo metodo split. A questão é que eu precisava armazenar isso em uma “Matriz”, ou em algo que eu pudesse ter o controle de todas as linhas e colunas. Espero estar sendo claro… hahaha. Segue o código:

public static void main(String[] args) {
    // TODO code application logic here
  int aux = 0;
  File arquivoCSV = new File("C:\\Users\\davidleles.REDEJMU\\Documents\\NetBeansProjects\\TabelaCSV\\ibge_gastos_educacao.csv");
  String[] valoresFormatados = null;
  
  try{
      
      String linhas;
      
      Scanner sc = new Scanner(arquivoCSV);
      
      sc.nextLine();
      
      while(sc.hasNext()){
          
          
            
          linhas = sc.nextLine();
          linhas = linhas.replace(";;", ";");
          valoresFormatados = linhas.split(";");
       
          for(int i = 0; i < 14; i ++){
             System.out.print(valoresFormatados[i] + " | ");   
          }
             System.out.println("  ");
      }
      
      
      
     
  }
    

  
  catch(FileNotFoundException e){
      System.out.println("Arquivo nao encontrado");
  }
  catch(NullPointerException e){
      System.out.println("NUUULOOO!!!");
  }
  catch(IndexOutOfBoundsException e){
      System.out.println("Estourou o Array!!");
  }
  
 
  
}

}

Grato desde já!

4 Respostas

T

Você já separou com split, basta criar um ArrayList e usar add. Algo como:

for(int i = 0; i < 14; i ++){
  System.out.print(valoresFormatados[i] + " | ");
  arraylistPreviamenteDeclarado.add(valoresFormatados[i]);
}

Abraço.

D

Eu ja tentei fazer isso, mas ele separa cada elemento em uma linha, como se fosse um vetor, e o que eu queria era uma “tabela”, entende?

T

Não, não entendo. Explique melhor.

Se você quer armazenar cada String lida do arquivo no ArrayList, precisa usar add na linha lida. Algo como:

while(sc.hasNext()){        
  linhas = sc.nextLine(); // isso lê uma linha inteira, antes do split
  arraylistPreviamenteDeclarado.add(linhas); // armazena a linha inteira dentro do arraylist
}

Se você quer que cada linha, depois de separada com split, forme um array dentro de um array maior, precisa de um ArrayList de ArrayList, que pode ser declarado assim:

List<ArrayList> arrayListGlobal = new ArrayList<ArrayList>();

E usado assim:

sc.nextLine();
while(sc.hasNext()){
  linhas = sc.nextLine();
  linhas = linhas.replace(";;", ";");
  valoresFormatados = linhas.split(";");

  List<String> subLista = new ArrayList<String>();
       
  for(int i = 0; i < 14; i ++){
    subLista.add(valoresFormatados[i]);
  }

  arrayListGlobal.add(subLista); // adiciona uma lista em outra lista
}

Abraço.

D

Caraca, era isso mesmo! Muito obrigado, de verdade!

Criado 26 de abril de 2018
Ultima resposta 26 de abr. de 2018
Respostas 4
Participantes 2