2013-07-21 31 views
3

我有一个函数打印Map对象,通用地图打印功能

public static void printMap(Map<Integer, Integer> map) { 
    for (Map.Entry<Integer, Integer> entry : map.entrySet()) {   
     System.out.println(entry.getKey() + " " + entry.getValue()); 
    } 
} 

现在,我想我的功能与Map<String, Integer>类型映射的工作了。怎么做?我一直想使用泛型,希望能够从这个问题开始。

回答

6

您可以编写通用的方法,如下面的代码:

public static <K, V> void printMap(Map<K, V> map) { 
    for (Map.Entry<K, V> entry : map.entrySet()) {   
     System.out.println(entry.getKey() + " " + entry.getValue()); 
    } 
} 

推荐阅读:


正如评论所指出的@JBNizet ,你也可以写使用通配符(?),而不是类型参数,如下的方法:

public static void printMap(Map<?, ?> map) { 
    for (Map.Entry<?, ?> entry : map.entrySet()) {   
     System.out.println(entry.getKey() + " " + entry.getValue()); 
    } 
} 
+0

真棒:)首先没有点击我的脑海 –

+0

@PrasadKharkar。我建议你通过链接网站。这是一本关于泛型的精彩文章。 –

+0

当然:)我会通过它 –

2

你可以用通配符Map<? extends Object, Integer>做到这一点。这一行意味着你可以拥有任何扩展Object类的东西。所以它可以是String,Integer,​​。任何东西。

1

怀疑你真的需要这个方法 - 使用Map实例的toString(),就是这样。

+0

不回答这个问题 - 它会有不同的行为。无论如何,OP在这里试图学习泛型。 –