2013-07-21 48 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在這裏試圖學習泛型。 –