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

TerraSkilll

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?

TerraSkilll

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