Sig*_*ran 5 java arrays string match
我该如何优化以下内容:
final String[] longStringArray = {"1","2","3".....,"9999999"};
String searchingFor = "9999998"
for(String s : longStringArray)
{
if(searchingFor.equals(s))
{
//After 9999998 iterations finally found it
// Do the rest of stuff here (not relevant to the string/array)
}
}
Run Code Online (Sandbox Code Playgroud)
注意:longStringArray每个运行时只搜索一次,并且没有排序,并且每次运行程序时都不同.
我确定有一种方法可以改善最坏情况下的表现,但我似乎无法找到它......
PS也会欣赏一个解决方案,其中数组longStringArray中不存在字符串搜索.
谢谢.
Jon*_*eet 19
好吧,如果你必须使用一个数组,并且你不知道它是否已经排序,并且你只打算进行一次查找,那么它总是会进行O(N)操作.你无能为力,因为任何优化步骤至少都是O(N)开始 - 例如填充一组或排序数组.
其他选择:
HashSet<String>.这将使每个查找变为O(1)操作(假设几次冲突).小智 6
import org.apache.commons.lang.ArrayUtils;
ArrayUtils.indexOf(array, string);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28181 次 |
| 最近记录: |