Java 如何实现基于不同条件的集合筛选

Java 如何实现基于不同条件的集合筛选,java,android,design-patterns,collections,filtering,Java,Android,Design Patterns,Collections,Filtering,我正在制作一个Android应用程序,其中有一个项目列表(超过500个条目)、10个过滤按钮(复选框)和一个搜索框 用户可以单击一个或多个过滤器,相应地更新列表 我是这样做的: 我从10个列表开始,每个列表仅由与筛选器匹配的项初始化,然后当用户激活(例如)筛选器1、3和7时,我将列表1、3和7相交,然后浏览它以根据搜索查询对其进行筛选 我发现这是迄今为止“最快”的方式,但我知道有一种更好、更有效的模式。你能推荐什么来减少时间 谢谢您可以使用一系列策略模式 interface IFilter {

我正在制作一个Android应用程序,其中有一个项目列表(超过500个条目)、10个过滤按钮(复选框)和一个搜索框

用户可以单击一个或多个过滤器,相应地更新列表

我是这样做的: 我从10个列表开始,每个列表仅由与筛选器匹配的项初始化,然后当用户激活(例如)筛选器1、3和7时,我将列表1、3和7相交,然后浏览它以根据搜索查询对其进行筛选

我发现这是迄今为止“最快”的方式,但我知道有一种更好、更有效的模式。你能推荐什么来减少时间


谢谢

您可以使用一系列策略模式

interface IFilter
{
    List<Item> Filter(List<Item> items);
}

class FilterA implements IFilter
{
    public List<Item> Filter(List<Item> items)
    {
        //filter
    }
}

class FilterB implements IFilter
{
    public List<Item> Filter(List<Item> items)
    {
        //filter
    }
}

//list that would have filters added to it as the user activates filters
List<IFilter> filters = new List<IFilter>();    
//your list of items
List<Item> items = new List<Item>();

public List<Item> Filter() {
    for (IFilter filter : filters) {
        items = filter.Filter(items);
    }    
    return items;
}
接口IFilter
{
列表过滤器(列表项);
}
类filter实现IFilter
{
公共列表筛选器(列表项)
{
//滤器
}
}
类FilterB实现IFilter
{
公共列表筛选器(列表项)
{
//滤器
}
}
//当用户激活过滤器时,将添加过滤器的列表
列表过滤器=新列表();
//你的物品清单
列表项=新列表();
公共列表筛选器(){
用于(IFilter过滤器:过滤器){
项目=过滤器。过滤器(项目);
}    
退货项目;
}