【问题标题】:Iterate over a Hash map of Arraylists遍历 Arraylists 的哈希映射
【发布时间】:2019-02-26 04:39:15
【问题描述】:

我有 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 示例行以及您期望的输出?
  • @NicholasK FirstName,MiddleInitial,LastName,StreetAddress,City,State,ZipCode Martha,C,Zermeno,928 Arrowood Drive,Jacksonville,FL,32217
  • @NicholasK 谢谢
  • @NicholasK 我想这样显示数据:Martha C Zermeno (\n) 928 Arrowood Drive (\n) Jacksonville, FL 32217 (\n)
  • 您需要在问题中而不是在 cmets 中添加所有这些内容。

标签: java arraylist hashmap


【解决方案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("------------------");
});

【讨论】:

    猜你喜欢
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多