【发布时间】:2017-11-26 17:05:30
【问题描述】:
让我们考虑以下方法,它允许我获取通用 Map 的项目,将具有通用属性 == 的项目过滤为值(这不是我的代码):
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
public class Utilities {
public static <T> List<T> getObjectWithAttributeEqualTo(Map<?, T> MyMap_Arg, Function<T, ?> MY_AttributeValueExtractor_Arg, Object MY_AttributeValueToEqual_Arg) {
return MyMap_Arg.values().stream()
.filter(o -> MY_AttributeValueExtractor_Arg.apply(o).equals(MY_AttributeValueToEqual_Arg))
.collect(Collectors.toList());
}
}
问题:如何调用和使用这个方法?
假设我有一个名为“Car”的类,它有一个非静态方法“getColor()”。我有对象“myHashMap”,即汽车地图,然后声明为
HashMap<Integer, Car> myHashMap ;
例如,我想在 myHashMap 中获取红色汽车的列表。
【问题讨论】:
-
car是 lambda 函数的参数名称。如果您不熟悉 Java 中的 lambda,请查看 Oracle 的 Java 教程。 -
查看getObjectWithAttributeEqualTo的签名。在那里你可以注意到这个方法的第二个参数是一个函数类型。那么 car -> car.getColor() 就是 Function 的一个实例。
-
我也无法重现您的问题。
-
您应该提供
Car类的代码。我无法重现错误。