我正在開發Android應用程序(Android 1.6),但這可能是一個更一般的Java問題。高效過濾Java/Android中的ArrayList
我有大約10,000個對象
的ArrayList對象包含3串(名字,中間名,姓氏)。
用戶在android上顯示一個「搜索框」,他們可以通過輸入部分名稱來搜索特定的「對象」。
我有一個類(我稱之爲Filterer),它通過10,000的列表搜索匹配對象,然後將它們作爲「子列表」返回。
搜索有點慢(特別是在Android手機上),我確定我沒有以最有效的方式進行搜索/過濾。
有沒有人有關於如何加快我的搜索的建議?我的代碼如下。一種可能性是針對已經具有小寫和連接的每個信息的輔助「masterList」進行搜索...但是可能有其他方式來改善這種搜索,這也將有所幫助。
TIA !!
public void filterNames() {
this.filteredList.clear();
String sv = this.searchString.toString.trim().toLowerCase(); // search value
for (int i = 0; i < this.masterList.size(); i++) {
MyObject d = this.masterList.get(i);
String fn = d.getFirstName().toString().toLowerCase();
String mn = d.getMiddleName().toString().toLowerCase();
String ln = d.getLastName().toString().toLowerCase();
if (fn.indexOf(sv) >= 0 ||
md.indexOf(sv) >= 0 ||
ln.indexOf(sv) >= 0) {
this.currentList.add(d);
}
}
}
在這裏尋找類似的問題:http://stackoverflow.com/questions/2085445/fast-index-for- contains-string是用C++記住的,但是一般的解決方案(數據結構和算法)是獨立於語言的。 – WildWezyr