每天我都会收到一个 30-40k 行的列表,每行都包含有意义或无意义的名称,如 fastcar、ultrafastcar、blablablacar 等。
我还有一个大列表,其中包含任何语言的所有单词(大约 50k 行(。
我想将第一个列表与第二个列表进行比较,以便过滤包含(或以 - 结尾(第二个列表中的单词。我的意思是,如果单词"ultrafastcar",那么它不会被过滤掉,但"blablacar"将被过滤掉。
我已经准备了一些Java代码,但是比较列表需要很长时间。我使用了 ArrayLists,并将它们与 contains((, startsWith(( 方法进行了比较。ArrayLists的选择是否正确,除了这些方法之外,我还可以使用什么算法来比较它们。
您可以尝试使用第二个列表实现三元搜索树,然后检查树中是否存在第一个单词。