通用HashMap

hud*_*udi 0 java generics hashmap

我有一个方法,check它有两个哈希映射作为参数.这些地图的键是a String,值是StringArraylist.

哪个是更好的解决方案:

public static boolean check(HashMap<String, ?> map1, HashMap<String, ?> map2) {
    for ( entry <String, ? > entry : map1.entryset()) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

public static <V> boolean check(HashMap<String, V> map1, HashMap<String, V> map2) {
    for ( entry <String, V > entry : map1.entryset()) {
        ...
    }    
}
Run Code Online (Sandbox Code Playgroud)

为什么?

您是否还可以向我提供有关这两种解决方案之间差异的更多信息?

cor*_*iKa 5

在第一,?什么都可以.一个可能是<String, String>另一个可能<String, Double>.在第二个选项中,它们必须相同.

现在第一个是可以接受的,只要你有能力转换它们就可以比较它们.例如,您可以.toString()对两个值进行比较.但就个人而言,我更喜欢第二种,因为它允许我对正在发生的事情有更多的控制权,并给我编译时检查类型.