大量数据处理问题
小弟现在有个特别的问题。关于数据处理的问题。
比如:
我现在手里有多个文件,每个文件里的数据格式是一样的。每个文件大小大约5mb左右,一共410个文件,文件大小1.99gb.为了确保这个程序在所有的机器上都可以运行,所以不可以使用数据库。
格式如下:
2010022509000018643064403132549021860430000
其中第14位到第24位为电话号码,我现在想将重复的号码去掉,留下不重复的号码。
现在小弟的做法:
1:首先将文件夹中的文件开始读取,读取方法使用BufferedReader.去重后写入1个临时文件,写入方法使用BufferedWriter。去重方法为hashset。因为每个文件中都有大量的重复数据,所以1.99个G的文件变成800MB左右的文件。耗时在5分钟左右。
2:然后将临时数据文件进行读取,因为不能保证文件和文件中没有重复数据,这个时候也需要去重。我使用的方式是hashset,这个时候读取的方法使用BufferedReader,在
while((data = br.readLine())!=null){
。。。。
}
经行业务处理。在业务处理中我将我需要的信息使用BufferedWriter写入制定文件夹。
现在这个程序执行起来有2个问题
1:
内存溢出,初步判断是hashset有长度限制。
2:程序执行速度奇慢。
我个人认为我的设计思路存在明显的问题,还有就是解决的方法也有明显的问题,请各位大虾帮助。。。。
------解决方案--------------------