这两种解决方案中哪一种更有效? (Java Hashset)

时间:2016-04-23 18:39:42

标签: java

我有一个充满文字的文字文件。我想将这些单词中的每一个添加到哈希集中。我也有一些我不想要的单词。

更有效率:

  • (A)将所有单词添加到我想要的哈希集中,并删除最后不想要的单词的哈希集。
  • (B)检查每个单词是否在我不想要的单词的散列集中,如果是,则忽略它。如果不是,那么将它添加到我想要的单词集中。

修改
我想要的词比我不想要的词多得多。

1 个答案:

答案 0 :(得分:3)

答案完全取决于您的列表大小。如果你有99999个你不想要的单词和1个单词,你应该做选项A.如果你想要99999个单词而你没有单词,你应该选择B。

这背后的原因显而易见 - 选项B变得越来越有效,不需要的单词的哈希集越小,因为你必须在使用选项B插入新单词时检查整个集合。

从纯粹的理论观点来看,两者在最坏情况时间复杂度方面都是相同的,但实际上,可能存在很大差异。

基本上,与大多数解决方案一样,效率取决于您对数据结构的期望。