我想从文件中读取数据并将每一行存储到单独的 LinkedList
中,但我不知道如何执行此操作,因为我使用的是 split 函数。
文字是这样的:
124,53,7,2
1,2,34,567,23
因此,将第一行存储到一个 LinkedList
中,将第二行存储到另一个 LinkedList
中。
例如:num1 拥有 124、53、7、2 个节点
num2 拥有 1, 2, 34, 567, 23 个节点
if(args.length == 0)
System.out.println("No file specified.");
else{
FileReader theFile;
BufferedReader inFile;
String oneLine;
int s;
try{
theFile = new FileReader(args[0]);
inFile = new BufferedReader(theFile);
LargeNumber num1 = new LargeNumber();
LargeNumber num2 = new LargeNumber();
while((oneLine = inFile.readLine()) != null){
String numbers[] = oneLine.split(",");
s = 0;
for(int i = 0; i < numbers.length; i++){
num1.push(Integer.parseInt(numbers[i]));
}
if((inFile.readLine()).length()==0){
continue;
}
}
}
catch(Exception e){
System.out.println(e);
}
}
最佳答案
如果我理解正确的话,您似乎想成对排列您的列表。这是最简单的方法,但不一定是最好的方法:
List<LargeNumber> firstList = new ArrayList<>();
List<LargeNumber> secondList = new ArrayList<>();
try{
theFile = new FileReader(args[0]);
inFile = new BufferedReader(theFile);
while(inFile.ready()){
String firstLine = getNonEmptyLine(inFile);
if(firstLine.isEmpty()) break;
String secondLine = getNonEmptyLine(inFile);
if(secondLine.isEmpty()) break;
firstList.add(makeLargeNumber(firstLine));
secondList.add(makeLargeNumber(secondLine));
}
}
catch(Exception e){
System.out.println(e);
}
这是readNonEmptyLine()
方法:
private String readNonEmptyLine(BufferedReader reader) {
while(reader.ready()) {
String nextLine = reader.readLine();
if(!nextLine.isEmpty()) return nextLine;
}
return "";
}
这是 makeLargeNumber
方法:
private LargeNumber makeLargeNumber(String line) {
LargeNumber num1 = new LargeNumber();
String numbers[] = oneLine.split(",");
s = 0;
for(int i = 0; i < numbers.length; i++){
num1.push(Integer.parseInt(numbers[i]));
}
return num1;
}
这会起作用,但最好有一个这样的类:
class NumberPair {
LargeNumber firstNumber;
LargeNumber secondNumber;
}
然后只有一个 List
而不是两个。我想您可以弄清楚如何修改上面的代码以使用 NumberPair
类。
关于java - 从文件读取时如何将一行保存到链接列表中并将下一行保存到另一个列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31495459/