比较java中的n个字符串

时间:2012-03-12 07:27:06

标签: java string string-matching

是否有人知道将匹配单个字符串与n个字符串进行比较的最快方法?

例如:需要将单词“example”与包含n个单词的列表进行比较,以进行匹配。该列表可以包含任意长度的任意数量的单词。

我可以使用特定的算法来执行此操作吗?我知道在字符串中找到子字符串的字符串匹配算法,例如Boyer-Moore算法。但不是这个。请帮帮我。请注意,我将在Java中实现它。

4 个答案:

答案 0 :(得分:3)

您可以使用contains方法。

List<String> lstr = Arrays.asList(new String[]{"a", "b", "c", "d", "e"});
Collections.sort(lstr); 

lstr.contains("c"); // true
lstr.contains("f"); // false

答案 1 :(得分:2)

运行循环直到列表末尾并使用 equals()方法比较每个元素

答案 2 :(得分:0)

您可以为列表准备Map<Int,List<String>>,其中键是字符串的.hashcode(),列表包含具有相同哈希码的所有字符串。

然后,您只需查找新字符串的哈希码,并对返回列表中的每个字符串运行equals()。

应该快得多,因为要比较的条目要少得多。请注意,准备工作需要一些时间,因此只有在您需要多次执行此操作时才能执行此操作。

答案 3 :(得分:0)

假设您只想检查完全匹配,那么您可以维护字典的哈希映射并查找单词的哈希值,也可以使用http://en.wikipedia.org/wiki/Trie之类的树,其中每个节点都是一个字母

与单词数量相比,两者的时间复杂度几乎是恒定的,而是取决于您正在查找的单词的长度(无关紧要)。