我对应该使用哪个集合有一个疑问。已经讨论了很多,但希望获得更多意见。
我有一个源系统,大约每 30 分钟就有 100,000 个交易文件进入我的应用程序。每个文件都有很多行代码(比如 1000 行)。我的应用程序应仅存储和处理最后 10 行交易详细信息。
如果我使用缓冲区读取器逐行读取文件内容,那么我必须继续在某个集合中添加每一行详细信息,最后一旦到达最后一行,就会以某种方式删除所有内容并仅保留最后 10 行。因此,即使我不需要全部,保留所有 1000 行也是一个性能问题。有没有任何集合或任何方法来改进这一点。
最佳答案
您可以使用 CircularFifoBuffer :
CircularFifoBuffer is a first in first out buffer with a fixed size that replaces its oldest element if full.
仅保留最后 10 行的用法:
CircularFifoBuffer buffer = new CircularFifoBuffer(10);
// read lines and add them to the buffer
读取行结束时,缓冲区仅包含最后 10 行。
关于java - 性能改进 30 分钟内 : How to read only last 10 lines of 100, 000 个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18399582/