可以估计每个文件的大小为50G×64=320G,远远大于内存限制的4G,不可能将其完全加载到内存中处理,考虑采取分而治之的方法。
- 第一步:遍历文件a,使用Hash函数将a文件中的url分别存储到1000个小文件中,这样每个小文件的大约为300M;遍历文件b,使用相同的Hash函数,将每个url存储到1000个小文件中。这样,所有可能相同的url都存在对应的小文件中。
- 第二步:求每对小文件中相同的url,可以把其中一个小文件的url存储到hash_set中。然后遍历另一个小文件的每个url,看其是否在刚才构建的hash_set中,如果是,那么就是共同的url,存到文件里面就可以了。