Module bus.core

Class MultiStringFinder.Node

java.lang.Object
org.miaixz.bus.core.text.finder.MultiStringFinder.Node
Enclosing class:
MultiStringFinder

protected static class MultiStringFinder.Node extends Object
AC 自动机节点
  • Field Details

    • isEnd

      public boolean isEnd
    • tagetString

      public String tagetString
    • fail

    • directRouter

      public MultiStringFinder.Node[] directRouter
      直接路由表 减少挑 fail过程 使用数组 + charIndex 希望库减少 hash复杂度和内存空间 当初始化 stringSet 数量较大时 字符较多可以一定程度上减少 hashMap 底层实现带来的 内存开销 directRouter 大小为 全部字符数量
    • nodeIndex

      public int nodeIndex
    • value

      public char value
    • failPre

      public List<MultiStringFinder.Node> failPre
  • Constructor Details

    • Node

      public Node()
  • Method Details

    • createRoot

      public static MultiStringFinder.Node createRoot(int allCharSize)
      构建根节点
      Parameters:
      allCharSize - 全部字符数量
      Returns:
      根Node
    • addValue

      public boolean addValue(char c, int nodeIndex, Map<Character,Integer> charIndex)
      新增子节点
      Parameters:
      c - 字符
      nodeIndex - 节点编号
      charIndex - 字符索引
      Returns:
      如果已经存在子节点 false 新增 ture
    • setEnd

      public void setEnd(String string)
      标记当前节点为 字符串尾节点
      Parameters:
      string - 字符串
    • getNext

      public MultiStringFinder.Node getNext(char c, Map<Character,Integer> charIndex)
      获取下一跳
      Parameters:
      c - 字符
      charIndex - 字符索引
      Returns:
      下一个Node
    • toString

      public String toString()
      Overrides:
      toString in class Object