Package com.hankcs.algorithm
Class State
java.lang.Object
com.hankcs.algorithm.State
一个状态有如下几个功能
- success; 成功转移到另一个状态
- failure; 不可顺着字符串跳转的话,则跳转到一个浅一点的节点
- emits; 命中一个模式串
根节点稍有不同,根节点没有 failure 功能,它的“failure”指的是按照字符串路径转移到下一个状态。其他节点则都有failure状态。
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
addEmit
(int keyword) 添加一个匹配到的模式串(这个状态对应着这个模式串)void
addEmit
(Collection<Integer> emits) 添加一些匹配到的模式串emit()
获取这个节点代表的模式串(们)failure()
获取failure状态int
getDepth()
获取节点深度int
getIndex()
获取最大的值获取goto表boolean
是否是终止状态按照character转移,根节点转移失败会返回自己(永远不会返回null)private State
转移到下一个状态nextStateIgnoreRootState
(Character character) 按照character转移,任何节点转移失败会返回nullvoid
setFailure
(State failState, int[] fail) 设置failure状态void
setIndex
(int index) toString()
-
Field Details
-
depth
protected final int depth模式串的长度,也是这个状态的深度 -
failure
fail 函数,如果没有匹配到,则跳转到此状态。 -
emits
只要这个状态可达,则记录模式串 -
success
goto 表,也称转移函数。根据字符串的下一个字符转移到下一个状态 -
index
private int index在双数组中的对应下标
-
-
Constructor Details
-
State
public State()构造深度为0的节点 -
State
public State(int depth) 构造深度为depth的节点- Parameters:
depth
-
-
-
Method Details
-
getDepth
public int getDepth()获取节点深度- Returns:
-
addEmit
public void addEmit(int keyword) 添加一个匹配到的模式串(这个状态对应着这个模式串)- Parameters:
keyword
-
-
getLargestValueId
获取最大的值- Returns:
-
addEmit
添加一些匹配到的模式串- Parameters:
emits
-
-
emit
获取这个节点代表的模式串(们)- Returns:
-
isAcceptable
public boolean isAcceptable()是否是终止状态- Returns:
-
failure
获取failure状态- Returns:
-
setFailure
设置failure状态- Parameters:
failState
-
-
nextState
转移到下一个状态- Parameters:
character
- 希望按此字符转移ignoreRootState
- 是否忽略根节点,如果是根节点自己调用则应该是true,否则为false- Returns:
- 转移结果
-
nextState
按照character转移,根节点转移失败会返回自己(永远不会返回null)- Parameters:
character
-- Returns:
-
nextStateIgnoreRootState
按照character转移,任何节点转移失败会返回null- Parameters:
character
-- Returns:
-
addState
-
getStates
-
getTransitions
-
toString
-
getSuccess
获取goto表- Returns:
-
getIndex
public int getIndex() -
setIndex
public void setIndex(int index)
-