java - 如何使用通用 HashMap 的过滤方法 - Java

标签 java list lambda hashmap

让我们考虑以下方法,它允许我获取通用 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/

相关文章:

java - 摆脱 Unchecked 覆盖 : return type requires unchecked conversion

java - Android 找不到符号方法 getMap()

python - 从 Python 列表项中删除标点符号

Java 8 传递方法作为参数

java - 使用星号打印图形以在 Java 中显示数据。如果语句?

java - 为什么 Content-Length HTTP header 字段使用的值不同于 Java 代码中给出的值?

c++ - 通过属性在 C++ 和 QML 之间共享数组或列表

c# - 如何确定 C# 中字符串列表中的重复项?

c# - LINQ to SQL GroupBy Max() lambda

java - 使用 lambda 表达式将 hashmap 保存到 String