【发布时间】:2026-02-14 03:10:01
【问题描述】:
我的 ActionBar 中有一个 SearchView,在用户键入字符时显示建议。 我的建议存储在 String ArrayList 中,如下所示:
private ArrayList<String> mSuggestions;
然后我的搜索功能会根据查询的文本显示建议。
public boolean onQueryTextChange(String newText) {
mSuggestions.clear();
for(MyObject o : mObjects)
if(o.getName().contains(newText))
mSuggestions.add(o.getName());
return false;
}
它有 O(n) 的效率,因为它遍历数组来搜索查询的单词。因此,当 mSuggestions.size() 增长时,它会变得缓慢且效率低下。
我想使用另一个比 ArrayList 更高效的容器来进行搜索 O(log(n)),但还没有找到最合适的容器。
有人对此有什么建议吗?
提前致谢。
【问题讨论】:
-
要获得真正有效的结果,您可以查看 SQLite FTS3 虚拟表,但它很复杂,并且第一次构建表需要时间,具体取决于数据库记录的数量。谷歌 FTS3。我认为 Android 开发网站也有一个如何使用它的示例。
-
听起来很有趣。我正在寻找的是更高层次的东西,比如使用另一个容器而不是 ArrayList 或任何算法。感谢您的回复。
标签: android actionbarsherlock performance searchview