敏感词过滤器
前缀树
定义前缀树
前缀树的定义只在,过滤敏感词当中用到,故将其定义为一个内部类
//前缀树
private class TrieNode{
//关键词结束标识
private boolean isKeywordEnd = false;
//当前节点的子节点(key是下级字符,value是下级节点)
private Map<Character,TrieNode> subNodes = new HashMap<>();
public boolean isKeywordEnd() {
return isKeywordEnd;
}
public void setKeywordEnd(boolean keywordEnd) {
isKeywordEnd = keywordEnd;
}
//添加子节点
public void addSubNode(Character c,TrieNode node){
subNodes.put(c,node);
}
//获取子节点
public TrieNode getSubNode(Character c){
return subNodes.get(c);
}
}
上述定义最妙的是,属性当中子节点的定义方式private Map<Character,TrieNode> subNodes = new HashMap<>();
,直接形成了树的结构,值得细品。
根据敏感词,初始化前缀树