java - 从文件读取时如何将一行保存到链接列表中并将下一行保存到另一个列表中

标签 java split linked-list bufferedreader filereader

我想从文件中读取数据并将每一行存储到单独的 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/

相关文章:

python - 提取括号内的字符串 - PYTHON

java - 如何拆分和重新排列我的字符串?

r - 将单行数据拆分为多行

Java - 类型对象的链表的链表

java - 如何从 Java 中的链表中删除特定值?

java - 从网上下载pdf后出现空白页

java - Android 图库 View ,其中图像保存在 sqlite 中作为 blob

java - JPA/Hibernate/Derby TableGenerator 使用负值

java - Hibernate - 同步映射同一列的两个属性

java - 通过搜索引用java删除节点