Я пытаюсь отфильтровать элементы из списка arraylist с помощью фильтра Google Guava, и он поддерживает только Collection E
.Мне нужно отфильтровать элементы из List of ArrayLists
.
. Пожалуйста, найдите мой код ниже, который работает для него.
Есть ли какое-либо решение для фильтрации элементов из List of Arraylists
?
ArrayList<ArrayList<String>> lists=new ArrayList<ArrayList<String>>();
ArrayList<String> list1 = new ArrayList<String>();
ArrayList<String> list2 = new ArrayList<String>();
ArrayList<String> list3 = new ArrayList<String>();
list1.add("Hello");
list1.add("hi");
list1.add("howdy");
list2.add("are you good");
list2.add("you doing");
list2.add("was the day");
list3.add("who");
list3.add("how");
list3.add("where");
lists.add(list2);
lists.add(list1);
lists.add(list3);
Collection<String> filtered=Collections2.filter(lists, Predicates.containsPattern("dy")); // not able to filter from List of ArrayLists.
System.out.println("Filtered -->"+filtered);
Обновление 1
Пожалуйста, найдите мою реализацию ниже:
Collection<Menu> menus = menuRepository.getMenus();
Collection<ArrayList<Menu>> enabledMenus = FluentIterable.from(menus)
.transformAndConcat(Functions.identity())
.filter(byDisabled())
.toList();
Получаю приведенную ниже ошибку
The method transformAndConcat(Function<? super Menu,? extends Iterable<? extends T>>) in the type FluentIterable<Menu> is not applicable for the arguments (Function<Object,Object>)
Пожалуйста, найдите мойbyDisabled()
Реализация метода ниже.
private Predicate<ArrayList<ArrayList<Menu>>> byDisabled() {
return new Predicate<ArrayList<ArrayList<Menu>>>() {
@Override
public boolean apply(ArrayList<ArrayList<Menu>> menu) {
return isMenuEnabled(menu);
}
};
}