Канонический способ - просто перебрать структуру данных и вставить нужные объекты в новый. К сожалению, в Java нет списочных или первоклассных функций. Но мы можем смоделировать их, используя такую библиотеку, как Функциональная Java :
import fj.F;
import fj.data.List;
import static fj.data.List.list;
import static fj.pre.Show.listShow;
import static fj.pre.Show.stringShow;
List<String> myList = list("one", "two", "three").filter(
new F<String, Boolean>() {
public Boolean f(String s) {
return s.contains("e");
}
});
listShow(stringShow).print(myList);
Это напечатает ["one", "three"]
на стандартный вывод.