我正在开发一个Android应用程序(Android 1.6),但这可能是一个更普遍的Java问题。
我有一个大约有10,000个对象的ArrayList
这些对象包含3个字符串(firstName,middleName,lastName)。
用户在Android上被呈现出一个“搜索框”,他们可以通过键入部分名称来搜索特定的“对象”。
我有一个类(我称之为Filterer),它搜索匹配的对象列表中的对象,然后将它们作为“子列表”返回。
搜索有点慢(尤其是在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);
}
}
}