字符串搜索并替换Java

时间:2017-03-19 01:30:18

标签: java search hashset string-search

我正在处理一种在我的字符串中查找关键字的算法方法。我有一个HashSet包含几乎一百万个键,我想用空白替换所有这些键到我的句子中。我的问题是,当我有1000个句子,其中10个单词时,它将完全变成10.000个单词。
在这里搜索关键词的最佳方法是什么?

    Set<String> keywords;//1.000.000 entry
    for(int i =0;i<textModel.length;i++){//1.000 entry almost
            String[] splitted = textModel[i].getText().split(" ");
            for (int j = 0; j < splitted.length; j++) {
                if(keywords.contains(splitted[j]){//?
                     splitted[j] = "";// ??
                }
            }
        }

这种方法可以吗?或者我应该使用文本搜索算法吗?

1 个答案:

答案 0 :(得分:0)

我认为如果你真的担心你的搜索时间,你应该使用Boyer-Moore算法。当存在不匹配时,算法会跳过你的X字符/单词数量。 enter image description here

但它允许使用称为“良好后缀”规则的内容,其中找到一个单词的一部分,并且与另一个子字符串平行的部分对齐,直到找到一对。 enter image description here

但如果时间不是问题,那么你的算法应该是好的。