hud*_*udi 0 java generics hashmap
我有一个方法,check它有两个哈希映射作为参数.这些地图的键是a String,值是String或Arraylist.
哪个是更好的解决方案:
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)
为什么?
您是否还可以向我提供有关这两种解决方案之间差异的更多信息?
在第一,?什么都可以.一个可能是<String, String>另一个可能<String, Double>.在第二个选项中,它们必须相同.
现在第一个是可以接受的,只要你有能力转换它们就可以比较它们.例如,您可以.toString()对两个值进行比较.但就个人而言,我更喜欢第二种,因为它允许我对正在发生的事情有更多的控制权,并给我编译时检查类型.