我有一个庞大的Arraylist,我使用搜索输入来过滤此列表。输入搜索词后,代码将一步一步地遍历列表,找到匹配的项,然后将其添加到新列表中,并显示来自新过滤列表的结果。我认为这是标准方法。但是我正在寻找一种更有效的方法,例如,如果我搜索“ A”,则过滤后的列表应包含以“ A”开头的所有项目,当我继续输入单词并键入“ Ab”时,代码应遍历以“ A”开头的最新列表,而不是整个原始列表。而且这也应该反向执行(例如我删除一些字母时)。这有可能吗?
答案 0 :(得分:0)
api 'com.google.guava:guava:27.0-android'
并过滤您的对象列表
Iterable<Object> filtered = Iterables.filter(ObjectList, new Predicate<Object>() {
@Override
public boolean apply(Object o) {
return yoursearchText.contains(o.getName());
}
});
我对大量数据使用此方法。
而且工作正常,
快乐编码:)