简介
有时候需要对用户输入的内容进行敏感词过滤,或者实现查找文本中出现的词典中的词,用遍历的方式进行替换或者查找效率非常低,这里提供一个基于Trie树的方式,进行关键词的查找与过滤,在词典比较大的情况下效率非常高。
Trie树
Trie树,又叫前缀树,多说无益,直接看图就明白了
词典:[“猪狗”, “小狗”, “小猫”, “小猪”, “垃圾”, “狗东西”]
Tire数据结构:
code
树节点Node.class
/**
* trie tree
*
* @author lovely dog
* @date 2020/10/20
*/
public class Node {
/**
* 子节点
*/
private Map<Character, Node> nextNodes = new HashMap<>();
public void addNext(Character key, Node node){
nextNodes.put(key, node);
}
public Node getNext(Character key){
return nextNodes.get(key);
}
public boolean isLastCharacter(){
return nextNodes.isEmpty();
}
}
搜索类TrieSearcher.class
/**
* trie tree searcher
*
* @author lovely dog
* @date 2020/10/20
*/
public class TrieSearcher {
private Node root = new Node();
/**
* 添加词
*
* @param word 词
*/
public void addWord