我有一个Event对象列表。每个对象暴露qazxsw poi getter。我需要过滤集合以仅获取具有特定id的项目,我可以这样做:
getId()
结果,我得到新的数组,过滤到项目,其中Lists.newArrayList(Iterables.filter(ret, x->x.getCategoryId().equals(category)));
等于我的特定getCategoryId()
。
好到目前为止。问题:如果不是单个特定类别,我有category
值的数组(所有类别都用作过滤器)。这看起来如下:
String
由于我的Lists.newArrayList(Iterables.filter(ret, x->x.getCategoryId().equals(categories.get(0)) || x.getCategoryId().equals(categories.get(1)) || ......../*To the end of the list*/));
列表是动态的,我需要使用动态查询来应用所有categories
标准。这样做的最佳方法是什么?我可以以某种方式循环它或提供数组作为我的标准||
方法?
注意:我在Android上,所以:
所以,你有什么想法吗?
所有你需要做的是建立一个番石榴filter
,因为你需要快速查找,它可能会从这个数组首先建立一个Predicate
得到回报:
Set
而不是简单地取代谓词:
Set<String> set = new HashSet<>(Arrays.asList(values));
仅使用Java 8,您可以执行以下操作:
x -> set.contains(x.getCategoryId())