让我们考虑以下方法,它允许我获取通用 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”,它是汽车 map ,然后声明为
HashMap<Integer, Car> myHashMap ;
例如,我想要获取 myHashMap 中的红色汽车列表。
最佳答案
这段代码在 Eclipse Oxygen 中工作正常,我认为你的 IDE 错误,给你一个“非静态”错误:
List<Car> redCars = getValuesWithAttributeEqualTo(myHashMap, Car::getColor, "red");
关于java - 如何使用通用 HashMap 的过滤方法 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47456400/