我有一段用于生成图表的代码:
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/