聽起來像你只需要讀取每個文件到Set<String>
的單詞,然後尋找交點建立你的羣集。例如,可以通過將單詞映射到出現次數(Map<String, Integer>
)或將單詞映射到一組文件名(Map<String, Set<String>>
)來實現。
不知道你在哪裏第二示例集羣來源於爲「巴賈吉」只存在於文件2
編輯:根據要求解釋地圖和設置是如何工作的
實例化Maps的地圖字符串(字),以一組文件名:
Map<String, Set<String>> wordsToFilenames = new HashMap<String, Set<String>>();
添加在文件名中找到這個字(假設我們在一個字從文件到字變量讀取,並有文件名的filena我變,兩個字符串):
Set<String> filenamesForWord;
if (wordsToFilenames.containsKey(word)) {
filenamesForWord = wordsToFilenames.get(word);
}
else {
filenamesForWord = new HashSet<String>();
wordsToFilenames.put(word, filenamesForWord);
}
filenamesForWord.add(filename);
你已經做了什麼?你有沒有想過算法?你有什麼問題? – 2011-05-06 07:32:35
在這種情況下,「相似」的確切定義是什麼?如果我有兩個任意文件,我該如何確定它們是否相似?它是對稱的(可能),傳遞性(可能不)?一旦你定義了算法,實現它可能會非常簡單。 – 2011-05-06 07:46:17
如果我有3個文本文件,就像我在ex中給出的那樣,並且這兩個文件中至少有一個詞匹配其中。所以它成爲一個集羣。 – 2011-05-06 07:53:03