【发布时间】:2013-10-03 03:47:14
【问题描述】:
我想做的是检查字符串是否包含字符串数组中的元素。我认为迭代所有数组元素并查看 String.contains(an element) 是否似乎效率不高。所以我想知道是否有更有效的方法可以快速查找。
例如,我想从地址字符串中获取国家名称。用户可以不受任何限制地写下他们的地址。地址字符串可以包含国家名称或城市名称。所以我想看看地址字符串是否有一个来自我将要构建的数组的元素,该数组有一堆国家名称和城市名称。
我目前的解决方案是:
ArrayList<String> list;
String address;
...
for (String s : list) {
if (address.contains(s))
return s;
}
这是 O(n)。我想知道是否有更快的解决方案。
谢谢。
【问题讨论】:
-
你有示例代码吗?
-
除非元素数组非常长,否则我只会迭代。您也可以构建一个“动态”正则表达式
Pattern,但这似乎比它值得做的工作更多。 -
如果他能存储模式,使用一个会更好。
-
代码运行速度是否太慢,无法满足您的要求? “过早的优化是万恶之源。-- Knuth
标签: java arrays string contain