我正在构建一个简单的

Java应用程序,涉及从csv文件中读取信息. csv文件中的信息以这种形式出现:

"ID","Description"

"AB","Some sort of information for AB"

"AC","Some sort of information for AC"

我需要让用户在按ID排序的控制台中打印出描述,id或两者.最简单的解决方案是使用CSV库(如opencsv)解析文件,并将这些字符串放在TreeMap中,然后打印TreeMap的内容. TreeMap中的键是ID,值是描述.

但是CSV文件可能很大.它可能是5 GB,并且将5GB的字符串加载到TreeMap中会导致内存不足错误.为了处理大文件,我可以使用外部合并排序对文件进行排序.有一次,我得到了排序文件,我可以通过简单地读取文件将文件内容打印到控制台中.

外部合并排序肯定比将文件内容加载到TreeMap要慢得多.我正在考虑检测文件大小.如果文件大小超过可用内存,那么我将使用外部合并排序.否则,我将把文件的内容加载到TreeMap中.

但是,这意味着将有两个单独的代码块执行2种不同的排序.因此增加了需要维护的代码量.如果您要编写此应用程序,您是否会考虑编写2个单独的代码代码来处理小型csv文件和单独的大型csv文件.或者您是否只使用外部合并排序对文件进行排序,而不管文件大小如何?

或者这种方法有替代方案吗?

谢谢.

java 文件内容排序_在Java中对2个大型文本文件进行排序的最佳方法是什么?相关推荐

  1. java 文件的修改_使用java来修改文件内容

    我需要就地修改文件的特定内容. 我不想创建一个新文件并重写旧文件.文件也很小,每个最大只有几MB. 对于那些想知道的人(虽然我不确定这是否与OP有关),我需要修改属于版本控制的文件并需要修改只读版本. ...

  2. idea中java文件怎么运行_在Java中使用临时文件/文件夹

    Java NIO.2 API提供了对使用临时文件夹/文件的支持.例如,我们可以轻松地找到临时文件夹/文件的默认位置,如下所示: Java 1 String defaultBaseDir = Syste ...

  3. java文件读取异常_关于Java:从文本文件读取会引发异常

    因此,我使用了DataInputStream,FileInputStream,BufferInputStream,FileReader,BufferedReader,Scanner,将其命名. 它们都 ...

  4. java中两个xml文件内容拼接_比较Java中2个XML文档的最佳方法

    慕丝7291255 听起来像是XMLUnit的工作http://www.xmlunit.org/https://github.com/xmlunit例子:public class SomeTest e ...

  5. java 实体类属性排序_按照list中实体类的某一属性排序

    命名不规范引发的DropDownListFor无法选中 问题的引出: 项目中遇到和以下链接相同的问题,大概可以描述为:后台ViewData["KeyName"],前台Model属性 ...

  6. java文件复制速度_【Java】Java代码拷贝文件的速度

    Java代码拷贝文件的速度究竟有多快? 前言 最近学习Java到了流处理,其中有种流叫FileInputStream和FileOutputStream,简单来说,就是操作文件的,老师给我们示范了一个非 ...

  7. java文件客户端下载_使用Java写一个minio的客户端上传下载文件

    标签:color   ati   tty   java   system   wired   format   media   param 前言: 确保已经安装了minio的服务端 代码: pom.x ...

  8. truncate python是删除文件内容吗_在Python中操作文件之truncate()方法的使用教程

    truncate()方法截断该文件的大小.如果可选的尺寸参数存在,该文件被截断(最多)的大小. 大小默认为当前位置.当前文件位置不改变.注意,如果一个指定的大小超过了文件的当前大小,其结果是依赖于平台 ...

  9. java.lang.IllegalArgumentException: 字符[_]在域名中永远无效。 at

    [http-nio-8080-exec-1] org.apache.coyote.AbstractProcessor.parseHost [xxx_tomcat] 是无效主机注意:更多的请求解析错误将 ...

最新文章

  1. CMake 打包已经存在的动态库生成 target
  2. java 图片传输方式_Java图像传输方法
  3. android GLES20 color
  4. 如何写优雅的SQL原生语句?
  5. Ubuntu下对双显卡的支持问题
  6. Swift - 自定义UIActivity分享
  7. 前端学习(3248):react的生命周期getSnapBeforeUpdate举例
  8. 从GAN到WGAN到LipschitzGA
  9. Docker快速部署PostgreSQL服务
  10. 一线大厂架构师都推荐的Java零基础大全,附面试答案
  11. java hql 参数_java – SQLQuery中的Hibernate命名参数
  12. hibernate运行很慢?查一张只有几条记录的表都要一俩分钟?[问题记录]
  13. python的ide怎么安装_python安装以及IDE的配置教程
  14. CodeSmith学习笔记(一):设置属性为打开文件,保存文件
  15. 使用消息队列的十大理由
  16. Java基础,使用switch分支实现出计算器计算机功能,简单易理解
  17. 为啥vb被计算机二级取消,计算机二级vb考试是不是今年最后一年
  18. EAS服务不可用或者更新一半中断解决方案
  19. ios怎么ftp上传文件到服务器,Mac OS通过 FTP工具上传文件的方法
  20. sqrt函数用法c语言 linux,C语言中sqrt函数如何使用

热门文章

  1. vba传值调用_小白关于VBA调用Sub传递参数之传值与传址的思考
  2. 自旋表达的到底是什么?
  3. python请求post无返回结果_Python请求POST返回不完整的内容
  4. html测试页,打印机测试页
  5. 【UWB】公式推导计算坐标值
  6. 【控制】《多智能体系统的动力学分析与设计》徐光辉老师-第2章-带时延位置的离散多智能体系统的一致性
  7. 卷积神经网络图像卷积池化尺寸计算器
  8. 3.6 权值初始化-机器学习笔记-斯坦福吴恩达教授
  9. STM32 进阶教程 14 - 程序加密之FLASH读写保护
  10. linux虚拟实验室关闭了,centos8禁用selinux临时关闭/永久关闭