@ Ответ Эрана является наиболее кратким, но вы должны написать перезагруженный метод:
public int operation(ObjectTest o) {
return o.getA() * o.getB();
}
Тогда вы можете просто написать:
import static java.util.Comparator.comparing;
import static java.util.stream.Collectors.maxBy;
list.stream().max(comparing(Test::operation)).orElse(null);
, чтобы получить объект, для которогооперация дает максимальный результат, и
list.stream().maToInt(comparing(Test::operation)).max().orElse(0);
для получения максимального результата.