簡體   English   中英

有沒有辦法從 Java 中的列表列表中打印項目?

[英]Is there a way to print an item from a List of Lists in Java?

我正在嘗試使用 CSV 格式將文本文件中的每一行拆分為名稱年齡變量,然后將它們打印出來。

例如 -

輸入:

  • 文件名 - records.txt

  • 百合,3

  • 安東,5

  • 比利,4

  • 瑪麗,1

Output:

  • 文件名:records.txt
  • 姓名:莉莉,年齡:3歲
  • 姓名:安東,年齡:5 歲
  • 姓名:比利,年齡:4 歲
  • 姓名:瑪麗,年齡:1 歲

我的問題是我似乎無法弄清楚如何從“記錄”中調用“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM