У меня есть файл 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());
}
Может ли кто-нибудь помочь, как перебрать данные?
@NicholasK FirstName, MiddleInitial, LastName, StreetAddress, City, State, Zi pCode Martha, C, Zermeno, 928 Arrowood Drive, Jacksonville, FL, 32217
@NicholasK Спасибо
@NicholasK Я хочу показать данные вот так: Martha C Zermeno (\ n) 928 Arrowood Drive (\ n) Джексонвилл, Флорида 32217 (\ n)
Вам нужно будет добавить все это в вопрос, а не в комментарии.




Во-первых, измените тип 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("------------------");
});
Не могли бы вы привести пример строки вашего csv и какой результат вы ожидаете?