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

我正在构建一个简单的

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文件.或者您是否只使用外部合并排序对文件进行排序,而不管文件大小如何?

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

谢谢.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值