与えられた2つのファイル、各保存50億URL、それぞれがそれぞれ64バイトを占めURL B、メモリの制限は4Gで、あなたは、一般的なURL bのファイルを見つける聞かせて?

パッケージcom.hadoop.hdfs。

輸入org.apache.hadoop.yarn.webapp.hamlet.Hamlet;
輸入org.junit.Test; 

輸入 java.io. * ;
輸入java.util.HashMapを;
輸入はjava.util.HashSet。

パブリック クラスSuanfa1 { 
    @Test 
    公共 ボイド A1()はスローにIOException { 
        BufferedReaderのBufferedReaderの = 新しい BufferedReaderの(新しい FileReaderの( "D:/aa.txtを" ));
//         なBufferedWriterなBufferedWriter =新しいBufferedWriterの(新しいてFileWriter( "D:// "))
        文字列STR1 = "" ;
        一方、(!(STR1 =はBufferedReader.readLine())= NULL ){
             int型 I =(INT)(ハッシュコード(0009)1000% )。
            BufferedWriterのBufferedWriterの = 新しい BufferedWriterの(新しいてFileWriter( "D:// AA" + String.valueOf(I)+ ".TXT" )); 
            bufferedWriter.write(0009)。
            bufferedWriter.close(); 
            System.out.println(I); 
        } 
        bufferedReader.close()。
    } 

    公共 ボイド A2()はスロー = IOExceptionが{
        BufferedReaderのBufferedReaderの
            bufferedWriter.write(0009)。新しいをBufferedReader(新しい FileReaderの( "D:/bb.txt" ));
//         BufferedWriterのBufferedWriterの=新しいBufferedWriterの(新しいてFileWriter( "D:// ")) 
        文字列STR1 = "" ;
        一方、(!(STR1 =はBufferedReader.readLine())= NULL ){
             int型 I =(INT)(ハッシュコード(0009)1000% )。
            BufferedWriterのBufferedWriterの = 新しい BufferedWriterの(新しいてFileWriter( "D:// BB" + String.valueOf(I)+ ".TXT" )); 
            bufferedWriter.close(); 
        } 
        bufferedReader.close()。
    } 

    公共 長いハッシュコード(文字列str){
         長い時間= 0 もし(H == 0 ){
             int型 = 0をオフチャーのval [] = str.toCharArray()。
            長い LEN = str.length()。
            ロング ; iがLEN <I ++は、I = 0 ){ 
                H = 31 *のH +ヴァル[++オフ]。
            } 
        } 
        戻りH; 
    } 

    @Test 
    公共 ボイド A3()はスローIOExceptionが{
        A1(); 
        A2(); 
        以下のためにint型私は++; I 1000 <I = 0 ){ 
            BufferedReaderのbufferedReader1 = 新しい(BufferedReaderのを新しい FileReaderの( "D:// AA" + String.valueOf(I)+ ".txtファイル" )); 
            BufferedReaderのbufferedReader2 = 新しいをBufferedReader(新しい FileReaderの( "D:// BB" + String.valueOf(I)+ ".TXT" )); 
            HashSetのセット = 新しいHashSetの(); 
            文字列INPUT1 = "" ;
            しばらく((INPUT1 = bufferedReader1.readLine())!= nullの){
                set.add(ハッシュコード(bufferedReader1.readLine()))。
            } 

            文字列INPUT2 = "" ;
            一方、((INPUT2 = bufferedReader2.readLine())!= NULL ){
                 場合(set.contains(ハッシュコード(INPUT2))){ 
                    のSystem.out.println(INPUT2)。
                } 
            } 
        } 

    } 
}

 

おすすめ

転載: www.cnblogs.com/lovemeng1314/p/11740754.html