Я разрабатываю Android-приложение (Android 1.6), но это, вероятно, более общий вопрос Java.
У меня есть ArrayList около 10 000 объектов
объекты содержат 3 строки (firstName, middleName, lastName).
Пользователю предоставляется "окно поиска" на андроиде, где они могут искать определенный "объект", введя часть имени.
У меня есть класс (который я называю Filterer), который просматривает список из 10 000 для сопоставления объектов, а затем возвращает их как "подписок".
Поиск немного SLOW (особенно на Android-телефоне), и я уверен, что я не делаю поиск/фильтрацию наиболее эффективным способом.
Есть ли у кого-нибудь предложения по ускорению моего поиска? Мой код ниже. Одна из возможностей поиска по второстепенному "мастер-листу", который уже имеет каждую часть информации в нижнем регистре и конкатенирован... но могут быть дополнительные способы улучшить этот поиск, который также поможет.
ТИА!!
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);
}
}
}