Hi, I'm developing an Android app (Android 1.6), but this is probably a more general Java question.
I have an ArrayList of about 10,000 objects
the objects contain 3 strings (firstName, middleName, lastName).
The user is presented with a "search box" on android where they can search for a particular "object" by typing in part of the name.
I have a class (which I call Filterer) that searches through the list of 10,000 for matching objects and then returns them as a "sublist".
The search is a little bit SLOW (especially on an Android handset) and I'm sure I'm not doing the search/filtering in the most efficient manner possible.
Does anyone have any suggestions on how to speed up my search? My code is below. One possibility to to search against a secondary "masterList" that already has every piece of information in lowercase and concatenated…but there may be additional ways to improve this search that would also help.
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);
}
}