通用地图打印功能

时间:2013-07-21 10:48:16

标签: java generics

我有一个函数打印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>类型的地图。怎么做?我一直想使用泛型,希望这个问题有一个良好的开端。

3 个答案:

答案 0 :(得分:7)

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

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() );
    }
}

答案 1 :(得分:2)

您可以使用通配符Map<? extends Object, Integer>执行此操作。这一行意味着您可以拥有任何扩展Object类的东西。所以它可以是StringIntegerUserDefinedObject。任何东西。

答案 2 :(得分:1)

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