[英]Is there a way to print an item from a List of Lists in Java?
我正在嘗試使用 CSV 格式將文本文件中的每一行拆分為名稱和年齡變量,然后將它們打印出來。
例如 -
輸入:
文件名 - records.txt
百合,3
安東,5
比利,4
瑪麗,1
Output:
我的問題是我似乎無法弄清楚如何從“記錄”中調用“singleRecord”。
public class FileManager {
private List<List<String>> records = new ArrayList<List<String>>();
public FileManager() {
}
public void pullRecordsFromFile(String fileName) {
try (Scanner input = new Scanner(Paths.get(fileName + ".txt"))) {
while (input.hasNextLine()) {
String row = input.nextLine();
String[] parts = row.split(",");
String name = parts[0];
String age = parts[1];
ArrayList<String> singleRecord = new ArrayList<String>();
singleRecord.add(name);
singleRecord.add(age);
records.add(singleRecord);
}
}
catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
public void printRecords() {
for (int i = 0; i < records.size(); i++) {
//Not sure how to print a 'singleRecord' from the 'Records' List
}
}
}
因此records.size()
將返回存儲在您的 ArrayList records
中的列表數,從您的示例中,它將返回4
。 此編號可用於從您的 ArrayList records
中獲取每個列表。 然后,只需從該列表中獲取所有元素:)。
for (int i = 0; i < records.size(); i++) {
List<String> insideList = records.get(i);
System.out.println("Name: " + insideList.get(0) + ",Age: " + insideList.get(1));
}
因為我們知道Name
在索引 0 上, Age
在索引 1 上,所以像這樣打印它是安全的。 (假設輸入文件總是正確的,但我把它留給你檢查:))
我會建議另一種方法。 定義一個 class Person,具有屬性 name 和 age,使用帶有 name 和 age 的構造函數,並創建一個 Person 列表。 然后,您可以根據需要打印列表。
您可以按照以下代碼輕松完成:
for (int i = 0; i < records.size(); i++) {
List<String> singleRecord = records.get(i)
System.out.println(String.format("Name: %s, Age: %s", singleRecord.get(0), singleRecord.get(1)));
}
或使用 foreach:
for(List<String> singleRecord: records) {
System.out.println(String.format("Name: %s, Age: %s", singleRecord.get(0), singleRecord.get(1)));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.