繁体   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