У меня есть список участников событий. Каждый объект выставляет 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
является динамическим, мне нужно использовать динамический запрос, чтобы применить все критерии ||
. Каков наилучший подход для этого? Могу ли я каким-то образом выполнить цикл или предоставить массив в качестве критерия для метода filter
?
ПРИМЕЧАНИЯ: я на Android, поэтому:
- Для упрощения синтаксиса можно использовать лямбды Java 8 (как вы можете видеть выше).
- Нельзя использовать потоки Java 8 (поскольку min api - это Android Lollipop). Вот почему Гуава используется для фильтрации. Пожалуйста, не предлагайте какие-либо предложения, основанные на потоках Java 8.
Итак, у вас есть идеи?