0

2 つのファイルから読み込み、2 つの別々の配列リストに保存しようとしています。ファイルは、1 行に単独の単語、またはコンマで区切られた 1 行に複数の単語のいずれかで構成されます。次のコードで各ファイルを読み取ります(完全ではありません):

ArrayList<String> temp = new ArrayList<>();

FileInputStream fis;
fis = new FileInputStream(fileName);

Scanner scan = new Scanner(fis);

while (scan.hasNextLine()) {
    Scanner input = new Scanner(scan.nextLine());
    input.useDelimiter(",");
    while (scan.hasNext()) {
        String md5 = scan.next();
        temp.add(md5);
    }
}
scan.close();    

return temp;

各ファイルにはほぼ 100 万語が含まれているため (正確な数はわかりません)、上記のコードが正しく機能するかどうかは完全にはわかりませんが、機能しているようです。

私は今、最初のファイル/アレイリストに排他的な単語数を知りたいと思っています。そうするために、list1のサイズを使用してチェックすることを計画しましlist1.removeAll(list2)たが、何らかの理由でこれが機能していません。コード:

public static ArrayList differentWords(String fileName1, String fileName2) {
    ArrayList<String> file1 = readFile(fileName1);
    ArrayList<String> file2 = readFile(fileName2);

    file1.removeAll(file2);

    return file1;
}

私のメインメソッドにはいくつかの異なる呼び出しが含まれており、上記のコードに到達するまではすべて正常に動作しますが、プログラムがハングするだけです (netbeans では単に「実行中」です)。
なぜこれが起こっているのですか?

4

2 に答える 2

-1

これを試して :

for(String s1 : file1){
    for(String s2 : file2){
        if(s1.equals(s2)){file1.remove(s1))}
    }
}
于 2013-06-03T08:55:17.783 に答える