更快地过滤庞大的Arraylist

时间:2018-10-29 08:56:36

标签: java android arraylist

我有一个庞大的Arraylist,我使用搜索输入来过滤此列表。输入搜索词后,代码将一步一步地遍历列表,找到匹配的项,然后将其添加到新列表中,并显示来自新过滤列表的结果。我认为这是标准方法。但是我正在寻找一种更有效的方法,例如,如果我搜索“ A”,则过滤后的列表应包含以“ A”开头的所有项目,当我继续输入单词并键入“ Ab”时,代码应遍历以“ A”开头的最新列表,而不是整个原始列表。而且这也应该反向执行(例如我删除一些字母时)。这有可能吗?

1 个答案:

答案 0 :(得分:0)

添加Google guava的依赖关系

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());
        }
    });

我对大量数据使用此方法。

而且工作正常,

快乐编码:)