概念:
字典树是一种数据结构,常用于统计,排序和保存大量的字符串(但不仅限于字符串)。主要思想是利用字符串的公共前缀来节约存储空间。
实现原理:
在开发的过程中如果需要使用字典树,不必自己编写,使用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即可,并不是使用的强制要求。