【发布时间】: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 中添加所有这些内容。