让我们考虑以下方法,它允许我获取通用Map的项目,将具有geneiric属性==的项目过滤为值(它不是我的代码):
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&#39;使用NOT STATIC方法&#39; getColor()&#39;。我有对象&#39; myHashMap&#39;,这是汽车的地图,然后声明为
HashMap<Integer, Car> myHashMap ;
我想要例如获取myHashMap中的红色汽车列表。
答案 0 :(得分:1)
这个代码在Eclipse Oxygen中运行良好,我认为你的IDE错误地给你一个不静态的&#39;错误:
List<Car> redCars = getValuesWithAttributeEqualTo(myHashMap, Car::getColor, "red");
答案 1 :(得分:0)
找到解决方案:
List<Car> redCars = Utilities.getObjectWithAttributeEqualTo(myHashMap, object->object.getColor(), "red");