我有一個目錄,其中有1000個txt.files。我想知道每個單詞在1000文檔中出現的次數。所以,即使在X中出現100次「奶牛」這個詞,它仍然會被視爲一個。如果它發生在不同的文檔中,則會增加1。因此,如果每個文檔中出現「cow」,最大值爲1000。如何在不使用任何其他外部庫的情況下輕鬆完成此操作。這裏是我到目前爲止文檔中的字數頻率
private Hashtable<String, Integer> getAllWordCount()
private Hashtable<String, Integer> getAllWordCount()
{
Hashtable<String, Integer> result = new Hashtable<String, Integer>();
HashSet<String> words = new HashSet<String>();
try {
for (int j = 0; j < fileDirectory.length; j++){
File theDirectory = new File(fileDirectory[j]);
File[] children = theDirectory.listFiles();
for (int i = 0; i < children.length; i++){
Scanner scanner = new Scanner(new FileReader(children[i]));
while (scanner.hasNext()){
String text = scanner.next().replaceAll("[^A-Za-z0-9]", "");
if (words.contains(text) == false){
if (result.get(text) == null)
result.put(text, 1);
else
result.put(text, result.get(text) + 1);
words.add(text);
}
}
}
words.clear();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(result.size());
return result;
}
好吧,這樣兩次迭代是必要的?沒有辦法做到一槍?有沒有辦法直接讀取整個txt文件作爲字符串,所以我不必逐行閱讀 – aherlambang 2011-03-10 00:30:13
ÁEquinoX不,只需要一次迭代,但您檢查/更新每個單詞的兩個集合。 – biziclop 2011-03-10 00:37:33
我認爲你誤解了我的問題......我不想在開始一個新文件時重置整個集合,因爲之前的集合中的前幾個字詞可能出現在下一個文件 – aherlambang 2011-03-10 00:38:12