gpt4 book ai didi

java - 共同应用接口(interface)的多个实现或条件

转载 作者:行者123 更新时间:2023-12-02 11:08:16 25 4
gpt4 key购买 nike

我有一个接口(interface)Calculate,它有一个方法calculate(List PriceList) public interface Calculate { public List<Double> calculate(List<Double> priceList); }

此接口(interface)的每个实现都会进行一些计算并检查priceList值上的某些条件,如果条件满足该价格值,那么它将返回priceList中满足值的列表作为输出。

示例。

`public class CalculateImpl1 implements Calculate { 
@Override
public List<Double> calculate(List<Double> priceList) {
List<Double> result = new AL();
loop the priceList
if(condition1 satisfies on priceList value) {
result.add(value);
}
return result;
}
}

public class CalculateImpl2 implements Calculate {
@Override
public List<Double> calculate(List<Double> priceList) {
List<Double> result = new AL();
loop the priceList
if(condition2 satisfies on priceList value) {
result.add(value);
}
return result;
}
}`

假设有一个类包含价格列表数据,我可以使用任何计算接口(interface)实现对该价格列表应用计算。

问题:如果我想同时将所有计算(CalculateImp1/condition1、CalculateImpl2/condition2....)应用到priceList,即priceList应该满足所有条件并获得输出,如何实现?

最佳答案

这就是谓词的用途:

public class CalculateImpl implements Calculate { 
@Override
public List<Double> calculate(List<Double> priceList, Predicate<Double> filter) {
priceList.stream().filter(filter).collect(Collectors.toList());
}
}

然后使用它:

Calculate calc = new CalculateImpl();
Predicate<Double> pre1 = d -> {condition1};
// Eg: Predicate<Double> pre1 = d -> d > 100; (filter price whose values greater than 100)
List<Double> list1 = calc.calculate(priceLIst, pre1);

要组合条件:

Predicate<Double> pre2 = d -> {condition2};
List<Double> list2 = calc.calculate(priceList, pre1.and(pre2));

要使用条件:

Predicate<Double> pre2 = d -> {condition2};
List<Double> list2 = calc.calculate(priceList, pre1.or(pre2));

关于java - 共同应用接口(interface)的多个实现或条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50770421/

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