[英]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.