java泛型方法调用转换错误

标签 java list generics hashmap type-conversion

我有一段用于生成图表的代码:

HashMap<String, List<Ticket>> openedTicketsPerTeam = getOpenedTicketsPerTeam();

我应该如何编写通用方法的签名来计算每个Map元素的列表长度? 我的想法是:

Map<String, Integer> getNumOfValuesPerKey(HashMap<String, List<? extends Object>> map) {...}

但调用后出现转换错误:

HashMap<String, Integer> numOfTicketsPerTeam = getNumOfValuesPerKey(openedTicketsPerTeam );

最佳答案

类似这样的东西(可用于任何K和任何V列表):

public static <K, V> Map<K, Integer> getNumOfValuesPerKey(Map<K, List<V>> map) {

    Map<K, Integer> count = new HashMap<K, Integer>();

    for (Entry<K, List<V>> entry : map.entrySet()) 
        count.put(entry.getKey(), entry.getValue().size());

    return count;
}

示例:

public static void main(String[] args) {

    HashMap<String, List<Integer>> map = new HashMap<String, List<Integer>>();

    map.put("Hello", Arrays.asList(1,2,3));
    map.put("World", Arrays.asList(4,5));

    System.out.println(getNumOfValuesPerKey(map));
}

输出:

{Hello=3, World=2}

关于java泛型方法调用转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11840380/

相关文章:

java - 在运行时镜像 java 中找不到适合 sqlite 的驱动程序

list - 方案相当于元组拆包是什么?

java - Spring AOP - 使用连接点获取泛型类类型(JAVA)

c# - C# 中的变量泛型返回类型

Python Pandas key 错误 : 'the label is not in the [index]'

java - 如何获取从具有指定泛型的接口(interface)继承的所有类的列表(接口(interface)<具体类>)

java - 如何检查一个类是否属于 java.lang.Number 类型

java - 为什么不允许未签名的小程序创建自定义类加载器?

java - 为什么我不能在 Java 的内部类中创建枚举?

python - 如何将一个列表的元素添加到另一个没有括号且没有导入的列表中?