听起来像你只需要读取每个文件到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