Итерации по хеш-карте Arraylists

У меня есть файл csv, содержащий данные, и я хочу проанализировать все данные, разделенные запятыми, я сделал код для чтения данных из файла.

Как я собираюсь просмотреть данные?

Вот мой код:

    ArrayList<String> keys;             // Holds key names from header row
    ArrayList<String> values;           // Holds the values read from subsequent rows

    HashMap<String, String> row;        // Holds the key/value pairs for each data row

    String line, header;


    ArrayList data = new ArrayList<>(); // Create ArrayList to hold HashMaps for all rows

    try {


        Scanner in = new Scanner(Paths.get("myfile.csv"), "UTF-8");

        /* Get list of keys from the header row; split into an ArrayList */

        header = in.nextLine();
        keys = new ArrayList(Arrays.asList(header.split(",")));

        /* Read and process every subsequent row (record) in CSV file */

        while ( in.hasNextLine() ) {

            /* Get next line */

            line = in.nextLine();

            /* Create new map for current row */

            row = new HashMap<>();

            /* Split comma-separated values into ArrayList */

            values = new ArrayList(Arrays.asList(line.split(",")));

            /* Populate map, using key names from the header row */

            for (int i = 0; i < keys.size(); i++) {

                row.put(keys.get(i), values.get(i));

            }

            /* Add map to data container */

            data.add(row);

        }

         in.close();

          // HERE I want to loop through data and display all key values
          // How am I going to do it?
          // the csv contains columns: firstname lastname city address
         }

    catch (Exception e) {

        System.err.println(e.toString());

    }

Может ли кто-нибудь помочь, как перебрать данные?

Не могли бы вы привести пример строки вашего csv и какой результат вы ожидаете?

Nicholas K 21.09.2018 20:41

@NicholasK FirstName, MiddleInitial, LastName, StreetAddress, City, State, Zi‌ pCode Martha, C, Zermeno, 928 Arrowood Drive, Jacksonville, FL, 32217

Jessica.P 21.09.2018 21:28

@NicholasK Спасибо

Jessica.P 21.09.2018 21:28

@NicholasK Я хочу показать данные вот так: Martha C Zermeno (\ n) 928 Arrowood Drive (\ n) Джексонвилл, Флорида 32217 (\ n)

Jessica.P 21.09.2018 21:29

Вам нужно будет добавить все это в вопрос, а не в комментарии.

Nicholas K 22.09.2018 11:50
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
6
5
48
1

Ответы 1

Во-первых, измените тип Arraylist, чтобы не использовать все время. Это означает, что сделайте это так, как ваш data ArrayList;

ArrayList<HashMap<String, String>> data = new ArrayList<>();

а затем добавьте область печати к этому коду Stream. Я добавил комментарий, чтобы все было понятно.

//loop on data list
data.forEach(hashMapOfRows -> {
    //seperate all data to read carefully,you can modify to your wants
    System.out.println("------------------");
    //for iteratable element is hashmap. So iterate on key value pair and print
    hashMapOfRows.forEach((key, value) -> System.out.print(key + ":" + value + ","));
    //seperate between elements.
    System.out.println();
    System.out.println("------------------");
});

Другие вопросы по теме