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