如何根据不同的标准实现集合过滤

时间:2012-09-16 14:02:31

标签: java android design-patterns collections filtering

我正在创建一个Android应用程序,其中包含一个项目列表(超过500个条目),10个过滤器按钮(复选框)和一个搜索框。

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

我是这样做的: 我从10个列表开始,每个列表仅由匹配过滤器的项目初始化,然后当用户激活(例如)过滤器1,3和7时,我创建列表1,3和7的交集,然后我浏览它根据搜索查询过滤它。

到目前为止,我发现这是“最快”的方式,但我知道有一个更好,更有效的模式。你能推荐什么,所以花更少的时间?

由于

1 个答案:

答案 0 :(得分:0)

您可以使用一组策略模式。

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