关键词查找,正向匹配和for循环比较

原创 2013年12月04日 14:41:29

需求:从给定字符串中查询出是否含有关键词


正向匹配:

public boolean matches(String str)
    {
        if (StringUtils.isBlank(str)||wordSet.size()==0) {//wordSet:关键词集合
            return false;
        }
        //wordMaxLength:关键词中最长一个的长度
        for (int pos = 0,size=str.length(); pos < size; pos++) 
        {
            String strFrag=str.substring(pos, size);
            
            int sizeNeedToMatch=wordMaxLength<=
                             strFrag.length()?wordMaxLength:strFrag.length();
            for (int i = 1; i <= sizeNeedToMatch; i++) 
            {
                String strToMatch=strFrag.substring(0, i);
                
                if (wordSet.contains(strToMatch)) {
                    return true;
                }
            }
        }
        
        return false;
    }

for 

for (String k : kws){
    	if(str.contains(k))return true;
 }

关键词在最后测试结果:

关键词数量:219
最大正向匹配:1945580ns
for indexof:193557ns


关键词在最前测试结果:

关键词数量:219
最大正向匹配:32504ns
for indexof:183582ns


考虑到在很多文档中过滤,关键词又少,还是使用for循环吧。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

分别用for循环和while循环实现九九乘法表的正向打印和颠倒打印

需求:1、使用for循环实现九九乘法表正向和颠倒打印。2、使用while循环实现九九乘法表的正向打印和颠倒打印。 public class Print99Demo { public static...

正向匹配分词实例及详解

  • 2015-11-07 19:56
  • 538KB
  • 下载

Scala模式匹配下的for循环

示例代码: object For_Advanced { def main(args: Array[String]): Unit = { /** * for循环内部调用的源...

用for循环对int数组的赋值和用System.arraycopy()对int数组赋值的速度比较

结论:还是用for循环吧。/* * 测试输入赋相同值的速度: * 问题来源:spfa()算法每次都要对两个 length=802 的数组赋值,也就是没求一条最短路径就要赋值一次,也就是大概赋值30...

Java 迭代器以及和for循环的比较

迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就可以遍历这个对象的内部. 1.Ite...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)