数据结构用法

时间:2016-02-17 17:30:50

标签: java data-structures

我最近遇到了一个问题,我需要在java中显示文件中的最后n行。它类似于在java中实现unix的tail函数,但我只有readline()方法和检查文件末尾的方法。没有其他方法。我正在考虑使用Queue数据结构的方法:

  • 从文件的第一行开始读取n行。
  • 存储队列中读取的n行。
  • 检查我们是否已到达文件末尾。如果是,请打印队列的内容。
  • 如果没有,请再读一行并将其推入队列。

有人能想到其他方法吗?

1 个答案:

答案 0 :(得分:2)

大小为n的环形缓冲区如何覆盖最旧的条目? 它基本上看起来像下面的代码。我编写了读取文件的函数,但你应该明白这一点。

String[] lines = new String[n];
int i = 0;
while(!file.eof()) {
  String line = file.readLine();
  lines[i] = line;
  i = (i + 1) % n;
}

for(int j = 0; j < n; j++) {
  if (lines[i] != null) {
    System.out.println(lines[i]);
  }
  i = (i + 1) % n;
}