我想加快我的代码。快速状态信息:
有多个列表(String
),例如_list1
,_list2
,_list3
。
我尝试在这些列表中找到一个单词(String
)。
如果我找到一个单词,我会使用列表中单词的索引。
这是我的代码:
private static int foundIndex (String s)
{
if (_list1.contains(s)) {
return _list1.indexOf(s);
} else if (_list2.contains(s)) {
return _list2.indexOf(s);
} else if (_list3.contains(s)) {
return _list3.indexOf(s);
} else if (_list4.contains(s)) {
return _list4.indexOf(s);
}
...
...
...
...
} else if (_list100.contains(s)) {
return _list100.indexOf(s);
}
return -1;
}
如何加快我的代码速度?
答案 0 :(得分:2)
我想到了几个简单的优化:
1.用if (contains) then indexOf
if (i = indexOf(s) >= 0) return i
模式
2.添加查找数据结构,如Map<String,Integer>
,并使用它代替列表,或者在添加或更改列表时通过更新它来添加它们
答案 1 :(得分:1)
在String
中添加所有列表(List<String>
)并对其进行迭代:
private static int foundIndex (String s) {
for (String currentList : lists){
int indexOf = currentList.indexOf(s);
if (indexOf != -1) {
return indexOf;
}
}
return -1;
}
答案 2 :(得分:0)
我将代码的算法更改为您的建议。 我之前使用的是列表,现在我改变了它。我使用2D String数组。 但代码性能下降了157%。
新守则:
private static String[][] _lists = new String[200][100];
private static int foundIndex (String s) {
for (int i = 0; i < 200; i++) {
for (int j = 0; j < 100; j++) {
if (_lists[i][j].equals(s) == true) {
return j;
}
}
}
return -1;
}
这就是问题出现的地方。
如果我正在寻找的代码是“_list [180] [?]”,则很难找到它。
如何加快我的代码速度?
谢谢。