我有一个方法check
,它有两个哈希映射作为参数。这些地图的关键字为String
,其值为String
或Arraylist
。
哪种解决方案更好:
public static boolean check(HashMap<String, ?> map1, HashMap<String, ?> map2) {
for ( entry <String, ? > entry : map1.entryset()) {
...
}
}
或
public static <V> boolean check(HashMap<String, V> map1, HashMap<String, V> map2) {
for ( entry <String, V > entry : map1.entryset()) {
...
}
}
为什么?
您是否还可以向我提供有关这两种解决方案之间差异的更多信息?
答案 0 :(得分:5)
在第一个,?什么都可以。一个可能是<String, String>
另一个可能是<String, Double>
。在第二个选项中,它们必须相同。
现在第一个是可以接受的,只要你有能力转换它们就可以比较它们。例如,您可以对两个值进行.toString()
进行比较。但就个人而言,我更喜欢第二种,因为它允许我对正在发生的事情有更多的控制权,并给我编译时检查类型。
答案 1 :(得分:0)
第二个在编译时强制执行两个映射的参数设置彼此相同。它还允许您对地图执行一些有用的操作,例如在其中插入非null
元素(使用通配符无法实现这一点)。