用于字符串匹配的Java数据结构

用于字符串匹配的Java数据结构,java,data-structures,matching,Java,Data Structures,Matching,我有一个很长的任意字符串列表,我想确定给定的字符串“ABADCAFE”是否以列表中的任何字符串开头。是否有一个图书馆类的地方,可以为我做到这一点合理有效 (我想这很像regex构建的状态机,但我不认为编写regex是一个好办法——我的列表太长了)你要找的可能是Patricia树或基数树: Apache Commons Collections和Google Collections库似乎有相同的实现:我不认为这里有什么神奇的算法可以给你带来超高的效率;毕竟,算法必须查看每个字符串。构建一个有限状态机

我有一个很长的任意字符串列表,我想确定给定的字符串“ABADCAFE”是否以列表中的任何字符串开头。是否有一个图书馆类的地方,可以为我做到这一点合理有效


(我想这很像regex构建的状态机,但我不认为编写regex是一个好办法——我的列表太长了)

你要找的可能是Patricia树或基数树:


Apache Commons Collections和Google Collections库似乎有相同的实现:

我不认为这里有什么神奇的算法可以给你带来超高的效率;毕竟,算法必须查看每个字符串。构建一个有限状态机或基数树,或者使用foreach——它们在字符串数量上都是线性的,对于这个应用程序来说也一样。

不确定这是否真的有效,所以我不想把它作为一个答案:也许构建一个树,其中节点是字符串中的字母。父母只能有一个孩子。父级的子级是其下一个字母,而叶的子级为null。在树上迭代以搜索可能的单词。foreach指令效率太低了?我想我应该加上迭代是重复的;i、 e.长列表被多次使用