Считаете ли вы необходимым написать метод?
Если вы не возражаете против использования сторонней библиотеки, тогда нет.
Некоторые предложения для сторонних библиотек, которые предоставляют эту функциональность:
Возможно, вы захотите взглянуть на Функциональная Java , которая предоставляет filter
, а также многие другие функции более высокого порядка, встречающиеся в истинно синих функциональных языках.
Пример:
List<Person> adults = filter(people, new F1<Person, Boolean>() {
public Boolean f(Person p) {
return p.getAge() > 18;
}
});
Другой альтернативой является использование lambdaj - библиотеки с аналогичными целями, но гораздо более краткой, чем функциональная Java.Тем не менее, лямбдадж не охватывает столько места, сколько функциональная Java.
Пример:
List<Person> adults = filter(having(on(Person.class).getAge(), greaterThan(18)), people);