Tôi đang phát triển một ứng dụng Android (Android 1.6), nhưng đây có lẽ là một câu hỏi Java tổng quát hơn.Lọc một ArrayList hiệu quả trong Java/Android
Tôi có một ArrayList khoảng 10.000 đối tượng
đối tượng chứa 3 chuỗi (firstName, middleName, lastName).
Người dùng được hiển thị với "hộp tìm kiếm" trên Android nơi họ có thể tìm kiếm "đối tượng" cụ thể bằng cách nhập một phần tên.
Tôi có một lớp (mà tôi gọi là Bộ lọc) tìm kiếm trong danh sách 10.000 đối tượng phù hợp và sau đó trả về chúng dưới dạng "danh sách phụ".
Tìm kiếm là một chút SLOW (đặc biệt là trên điện thoại Android) và tôi chắc chắn tôi không thực hiện tìm kiếm/lọc theo cách hiệu quả nhất có thể.
Có ai có bất kỳ đề xuất nào về cách tăng tốc độ tìm kiếm của tôi không? Mã của tôi là dưới đây. Một khả năng để tìm kiếm dựa trên "masterList" phụ đã có mọi thông tin trong chữ thường và ghép nối ... nhưng có thể có thêm các cách để cải thiện tìm kiếm này cũng có thể hữu ích.
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);
}
}
}
Nhìn vào đây để vấn đề tương tự: http://stackoverflow.com/questions/2085445/fast-index-for- contains-string nó được hỏi với C++ trong tâm trí, nhưng giải pháp chung (cấu trúc dữ liệu và thuật toán) là ngôn ngữ độc lập. – WildWezyr