gpt4 book ai didi

java - 如何查询一般情况?

转载 作者:行者123 更新时间:2023-11-30 05:27:13 25 4
gpt4 key购买 nike

我已将代码从 Matlab(数组方向)翻译为 Java(OOP)。当我要翻译Matlab的这个功能时,问题出现了:

min_omegaF_restricted=min(omegaF(p>cost));

这里,omegaF 是一个 vector ,其中包含每个公司的净 Assets 。p 每个公司的价格 vector 。cost 每个公司的成本 vector 。上述计算了需求价格高于成本的幸存企业的最低净 Assets 。在java中可以翻译为:

double min_omegaF_restricted=Double.POSITIVE_INFINITY;
for(int f=0; f<F; f++){
Firm fo=firms.get(f);
if(fo.p>fo.cost)
min_omegaF_restricted=Math.min(min_omegaF_restricted, fo.omegaF);
}

是否可以选择将此类句子推广到任何条件(fo.p>fo.cost)?

最佳答案

是的。 Java 8 中的函数式接口(interface)和 lambda 表达式使这一过程变得简单明了。创建 Predicate它测试一个对象并返回一个 boolean 值。

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);

关于java - 如何查询一般情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58290038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com