开发者社区> 问答> 正文

关于Java io 大文本数据 缩放的问题

现在是:
jsp --> action --> service --> 查询本地硬盘文件
文件是文本,里面放着一条条数据
数据条数不定,可能从几百条到100w条。
需要将这几百条到100w条的数据读取后显示在jsp上,并支持缩放功能。由于100w级别这样的数据,用一页是显示不完的,所以决定一页最多显示1000条,也就是从这100w条中抽取。

在页面上显示用的是Highcharts,将这1000条数据的行号和值传给jsp,然后用Highcharts画出曲线。

那么问题就是,抽取这100w条数据怎么抽取。

我现在的做法是:
先计算出要抽取那些行,存入list。然后一行一行读,读到哪一行是属于list的,就将这行数据存入一个list。
最后把100w行读完了,要显示的行数就存完了,返回到页面上去。
抽取的方案是:比如100w条数据,只显示1000条在页面上的话,就是取一条后跳1000条再取,这样一共取1000条。缩放时也是一样,比如要查看20w到50w之间的数据,就计算跳多少条,然后取1000条出来。

由于要支持缩放,那么每次缩放,就要重新计算读取哪1000行数据,然后同样又读取那个文本数据的100w行数据,筛选出要返回的行数据。
这样的话,100w行的数据,缩放一下要等个几秒钟才能显示出来。
第一次加载用几秒钟可以接受,可是缩放想做得更快,不知有何良策?

展开
收起
小旋风柴进 2016-03-03 17:18:50 2733 0
1 条回答
写回答
取消 提交回答
  • 如果每行的长度都相等的话,可以考虑使用类:

    RandomAccessFile 
    http://stackoverflow.com/questions/18933234/jump-to-specific-line-in-txt-file-where-all-lines-are-of-equal-length-in-java

    如果是结构化数据的话,感觉放到数据库,为每行加一个索引的行号,效率是相当高的(最好在写文件的时候直接到数据库).

    2019-07-17 18:51:42
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
如何通过 Serverless 提高 Java 微服务治理效 立即下载
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
多IO线程优化版 立即下载