Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较java中的n个字符串_Java_String_String Matching - Fatal编程技术网

比较java中的n个字符串

比较java中的n个字符串,java,string,string-matching,Java,String,String Matching,有人知道将单个字符串与匹配的n字符串数进行比较的最快方法吗 例如:“示例”一词需要与包含n字数的列表进行比较,以便匹配。该列表可以包含任意数量、任意长度的单词 有没有一个具体的算法我可以用来做这件事?我知道字符串匹配算法可以在字符串中找到子字符串,比如Boyer-Moore算法。但这次不行。请帮帮我。请注意,我将用Java实现这一点。您可以使用该方法 List lstr=Arrays.asList(新字符串[]{“a”、“b”、“c”、“d”、“e”}); 集合。排序(lstr); lstr.包

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

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

有没有一个具体的算法我可以用来做这件事?我知道字符串匹配算法可以在字符串中找到子字符串,比如Boyer-Moore算法。但这次不行。请帮帮我。请注意,我将用Java实现这一点。

您可以使用该方法

List lstr=Arrays.asList(新字符串[]{“a”、“b”、“c”、“d”、“e”});
集合。排序(lstr);
lstr.包含(“c”);//真的
lstr.包含(“f”);//假的

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

您可以为列表准备一个
映射
,其中键是字符串的
.hashcode()
,列表包含具有相同hashcode的所有字符串

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


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

假设您只想检查精确匹配,那么您可以维护字典的哈希映射并查找单词的哈希,或者使用类似于每个节点都是字母的树


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

单词列表是否以任何方式排序或索引?否则你只需要在一个循环中为每一个做Boyer Moore。什么样的匹配?答案假设“匹配”的意思是“查找完全相同的字符串”,例如,不是子字符串。字符串无论如何都不会排序,是的,我正在尝试获得完全匹配(不区分大小写)“不区分大小写”对此做了相当多的更改…假设您需要对同一个列表多次执行此操作。请解释如何使此操作适用于不区分大小写的匹配(请参阅问题的注释)。如果字符串可以小写并且仍然有意义,则在处理前将其小写。不适用于不区分大小写的匹配(请参阅对问题的评论。)本例中为+1或相等信号。此外,可能在第一场比赛中爆发。
List<String> lstr = Arrays.asList(new String[]{"a", "b", "c", "d", "e"});
Collections.sort(lstr); 

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