我試圖從兩個文件讀入並將它們存儲在兩個單獨的數組列表中。這些文件由單獨在一行上的單詞或用逗號分隔的多行文字組成。 我讀下面的代碼(不完整)的每個文件:remove對arraylist的所有操作都會使程序掛起
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.removeAll(list2)
,然後檢查list1的大小 - 但出於某種原因,這不起作用。代碼:
public static ArrayList differentWords(String fileName1, String fileName2) {
ArrayList<String> file1 = readFile(fileName1);
ArrayList<String> file2 = readFile(fileName2);
file1.removeAll(file2);
return file1;
}
我主要的方法中包含幾個不同的電話,直到我到了上面的代碼,剛剛導致程序掛起(在它只是「跑」的NetBeans)一切工作正常。
任何想法爲什麼會發生這種情況?
這聽起來像一個非常沉重的操作,可能只需要永遠完成。我認爲你應該重新考慮你的方法。 – Keppil
我想你的意思是'while(input.hasNext()){'? – Djon
使用'HashSet'而不是'ArrayList'可能會加快速度。 – Kai