gpt4 book ai didi

Java boolean 方程作为函数的参数

转载 作者:行者123 更新时间:2023-11-29 08:35:34 26 4
gpt4 key购买 nike

让我们看看我的程序。有一些带有汽车模型的假想 .txt 文件。

public class Car {
private String model;

public String getModel() {
return this.model;
}
}

public class Main {
public static void Main(String[] args) {
ArrayList<Car> cars = loadCars(path); //imaginary func and file
String someModel = generateSomeModel(); //imaginart func

for (Car c : cars)
if (c.getModel.equals(someModel))
System.out.println("Hit!");

for (Car c : cars)
if (!c.getModel.equals(someModel))
System.out.println("Hit!");

}
}

假设我必须检查我的汽车列表 100 次,并且每次都在 if 语句中比较它们的一些不同属性,这意味着我将不得不编写 100 个不同的 for 循环,而循环的 90% 是相同的。有没有办法编写一个将作为参数 boolean 方程的函数?像这样。

public static void printCars(Boolean equation) {
for (Car c : cars)
if (Boolean equation)
System.out.println("Hit!");
}

最佳答案

您可以使用 Predicate 接口(interface)将函数(或 lambda)作为参数传递给您的函数:

https://docs.oracle.com/javase/8/docs/api/java/util/function/Predicate.html

使用谓词,您可以按以下方式重写您的函数:

public static void printCars(Predicate<Car> filter) {
for (Car c : cars)
if (filter.test(car))
System.out.println("Hit!");
}

然后通过以下方式传递所需的功能:

printCars(c -> c.getModel().equals("bmw"));

关于Java boolean 方程作为函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44349121/

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