es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo leer un archivo CSV en Java y convertir la columna como clave y el valor de la fila como pares clave-valor.

Tengo un archivo de entrada CSV llamado sample.csv:

Student_name   Roll_num   Marks 
Anvay          1001         80
Vini           1002         69
Jay            1003         70

¿Cómo puedo leer los datos línea por línea en Java 8 usando OpenCSV y analizarlo como una lista de pares clave-valor? (manteniendo la clave como el nombre de la columna y el valor como el valor de la fila)?

Salida esperada:

['Student_name': 'Anvay', 'Roll_num': 1001, 'Marks': 80]
['Student_name': 'Vini', 'Roll_num': 1002, 'Marks': 69]
['Student_name': 'Jay', 'Roll_num': 1003, 'Marks': 70]
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para leer los datos línea por línea en Java 8 utilizando OpenCSV y parsearlos como una lista de pares clave-valor, puedes seguir los siguientes pasos:

    1. Agrega la dependencia de OpenCSV en tu archivo Maven o descarga el archivo JAR manualmente y agrégalo al classpath.
    2. Crea un objeto CSVReader y pasa la ruta del archivo de entrada como parámetro.

    CSVReader reader = new CSVReader(new FileReader("sample.csv"));
    
    1. Obtiene las columnas de encabezado del archivo CSV y almacénalas en un arreglo de strings.
    String[] header = reader.readNext();
    
    1. Crea un ArrayList de LinkedHashMaps para almacenar los pares clave-valor.
    ArrayList<><string, object="">> list = new ArrayList<>();
    
    1. Lee cada línea del archivo CSV y almacena los valores en un arreglo de strings.
    String[] row;
    while ((row = reader.readNext()) != null) {
        // procesa la fila
    }
    
    1. Para cada fila, crea un nuevo objeto LinkedHashMap y añade los pares clave-valor a él.
    LinkedHashMap<string, object=""> map = new LinkedHashMap<>();
    for (int i = 0; i < header.length; i++) {
        map.put(header[i], row[i]);
    }
    
    1. Añade el objeto LinkedHashMap al ArrayList.
    list.add(map);
    
    1. Finalmente, muestra el ArrayList para ver la salida.
    System.out.println(list);
    

    El código completo se vería así:

    CSVReader reader = new CSVReader(new FileReader("sample.csv"));
    String[] header = reader.readNext();
    ArrayList<><string, object="">> list = new ArrayList<>();
    String[] row;
    while ((row = reader.readNext()) != null) {
        LinkedHashMap<string, object=""> map = new LinkedHashMap<>();
        for (int i = 0; i < header.length; i++) {
            map.put(header[i], row[i]);
        }
        list.add(map);
    }
    System.out.println(list);
    

    La salida sería:

    [{"Student_name":"Anvay","Roll_num":"1001","Marks":"80"}, {"Student_name":"Vini","Roll_num":"1002","Marks":"69"}, {"Student_name":"Jay","Roll_num":"1003","Marks":"70"}]</string,></string,></string,></string,>

Comments are closed.