【发布时间】:2018-11-30 10:01:02
【问题描述】:
我打算做的基本上是:
- 逐字读取第一个文件并将单词存储在一个 Set(SetA) 中。
- 读取第二个文件并检查第一个 Set(SetA) 是否包含该单词,如果包含则将其存储在第二个 Set(SetB) 中。现在 SetB 包含第一个和第二个文件中的常用词。
- 同样,我们将读取第三个文件并检查 SetB 是否包含该单词并将该单词存储在 SetC 中。
因此,如果您对我的方法有任何建议或任何问题。请提出建议。
【问题讨论】:
-
优化将从最小的文件开始,或者理想情况下从包含最少数量的唯一词的文件开始。对于大文件,将所有单词成组存储可能会导致内存不足问题。
-
@AdriaanKoster 同意。我想了想,我觉得如果我们有多个文件,我们不能只增加 Set 的数量。我们可以只使用两个集合来实现这一点——一个包含常用词,另一个包含我们正在迭代的当前文件的唯一词。这样我们就只有两组了。
-
所以要处理下一个文件,您需要将其所有单词存储在一个临时集中。然后确定 commonWords 集和临时集的交集(交集只包含两个集中出现的单词)。这样做的结果是新的 commonWords 集,临时集可以被丢弃。