现有有两个txt文件,比如a.txt,b.txt,这两个文件里面都是有一千万条数据.现在对这两个文件当中重复的文件过滤掉,把b.txt存在,而a.txt中不存在的数据写到c.txt当中.我试过用list这种普通的过滤会抛内存溢出.不知道还有没其它的好方面.求助各位高手.数据比对数据过滤
解决方案 »
- Tomcat下做虚拟主机配置了新网站就一定要重启吗?
- freemarker怎么遍历数组
- java链接MSSQL数据库的问题
- 用户被锁alter user xxx account unlock
- 小生有一jsp疑惑请j教sp骨灰!
- MYSQL 每个库连接最大数为2 但是好几个项目可能同时连接
- 我最新的ASP.NET程序,欢迎大家测试及反馈意见.
- 急!我在resin上调试jfreechart报错!
- 那位朋友告诉我jsdk2.1在那里有下载。我真的在java.sun.com找不到阿!谢谢了!等待你。。。
- 请问这个需求怎么做,做一天了:周五未填写日志时,周一中午12点之前可补写(目前为前一天的日志隔天12点之后不可以,未将周末和节假日特殊化)
- java web服务调用错误,求高手解决
- 使用kindEditor进行图片上传时显示“上传错误”
对比多条复杂的记录很慢,但是对比一堆hashcode要快的多,所以,创建两个临时文件 a.txt.index和b.txt.index,这两个临时文件中只有三列信息:某条记录在x.txt的文件位置、记录长度和此条记录hashcode。
一次从a.txt.index取十万条记录 放到内存用不了多少M。再于b.txt.index分批比较,由于只需要比较hashcode,比较速度应该是比较快的。
另外感觉对比的算法上应该提高。
要是双list循环比对绝对崩。
b切成n份
for(i=0; i<n; i++) {
将切片传入A中进行验证
}a切分成m份
function A:
for(i=0; i<m; i++) {
将B的某个切片 放进来比对A的切片
每次比对 , 清理内存
}