Module bus.core

Class MultiStringFinder

java.lang.Object
org.miaixz.bus.core.text.finder.MultiStringFinder
Direct Known Subclasses:
HighMultiReplacerV2.AhoCorasickAutomaton

public class MultiStringFinder extends Object
多字符串查询器 底层思路 使用 AC 自动机实现
Since:
Java 17+
Author:
Kimi Liu
  • Field Details

    • charIndexMap

      protected final Map<Character,Integer> charIndexMap
      字符索引
    • allCharSize

      protected final int allCharSize
      全部字符数量
    • root

      protected final MultiStringFinder.Node root
      根节点
  • Constructor Details

    • MultiStringFinder

      public MultiStringFinder(Collection<String> source)
      构建多字符串查询器
      Parameters:
      source - 字符串集合
  • Method Details

    • of

      public static MultiStringFinder of(Collection<String> source)
      创建多字符串查询器
      Parameters:
      source - 字符串集合
      Returns:
      多字符串查询器
    • buildPrefixTree

      protected void buildPrefixTree(Collection<String> stringSst)
      构建前缀树
      Parameters:
      stringSst - 待匹配的字符串
    • buildFail

      protected void buildFail()
      构建 fail指针过程 构建 directRouter 直接访问路由表 减少跳fail次数 直接跳 router 边
    • findMatch

      public Map<String,List<Integer>> findMatch(String text)
      查询匹配的字符串
      Parameters:
      text - 返回每个匹配的 字符串 value是字符首字母地址
      Returns:
      匹配结果
    • getIndex

      protected int getIndex(char c)
      获取字符 下标
      Parameters:
      c - 字符
      Returns:
      下标