Да. Функциональные интерфейсы и лямбды в Java 8 делают это простым и легким для глаз. Создайте Predicate , который проверяет объект и возвращает логическое значение.
Predicate<Firm> predicate = firm -> firm.p > firm.cost;
Затем вы можете использовать предикат в цикле следующим образом:
double min_omegaF_restricted=Double.POSITIVE_INFINITY;
for(int f=0; f<F; f++){
Firm fo=firms.get(f);
if(predicate.test(fo))
min_omegaF_restricted=Math.min(min_omegaF_restricted, fo.omegaF);
}
Более того, с новым потоковым API вы можете функционально выразить все вычисления без явного цикла for
.
double min_omegaF_restricted = firms.stream()
.filter(predicate)
.mapToDouble(f -> f.omegaF)
.min()
.orElse(Double.POSITIVE_INFINITY);