概念:
字典树是一种数据结构,常用于统计,排序和保存大量的字符串(但不仅限于字符串)。主要思想是利用字符串的公共前缀来节约存储空间。
实现原理:
在开发的过程中如果需要使用字典树,不必自己编写,使用hutool提供的WordTree工具类即可,使用案例如下:
public static final List<String> blackList = Arrays.asList("File","exec");
public static final WordTree wordTree;
static{
// 初始化字典树
wordTree = new WordTree();
wordTree.addWords(blackList);
}
public ExecuteResponse executeCode(ExecuteRequest executeRequest) {
// 校验黑名单代码
FoundWord foundWord = wordTree.matchWord(code);
if(foundWord != null){
System.out.println("代码中包含禁止词:" + foundWord);
return null;
}
}
注意这里使用静态代码块进行WordTree的初始化是因为executeCode方法被多次执行,而我们只需要有一个WordTree即可,并不是使用的强制要求。