【发布时间】:2013-04-24 14:02:41
【问题描述】:
我想检查 2 个HashMap<Number,String> 之间的相等性。
我的想法是使用 new BigDecimal(number.toString()) 将每个 Number 转换为 BigDecimal,然后使用 compareTo() == 0 而不是比较 2 个地图时使用的基本 equals 检查相等性。
谁有一个很好的实现,甚至更好:一个更好的想法?
【问题讨论】:
-
这取决于您如何定义两个映射是否等于。它们是否应该只有相同的键、相同的值、相同的键值对?
-
在我的例子中是相同的键值对。
-
1:你不能在数字之间做相等。 2 :你应该知道永远不要在 2 BigDecimal 之间做等于,因为它是基于比例的
-
@Shark - 这是一个 Java 问题。 Java 中没有
memcmp这样的东西! -
@Olivier:您必须将两张地图之间的“相等”定义形式化。如果 map 1 包含映射 [int 42 -> "foo"] 和 [long 42 -> "bar"] 并且 map 2 包含映射 [int 42 -> "bar"] 和 [long 42 -> "map" ]。地图是平等的吗?还有很多其他的极端情况,既不明显,也不在您的描述中指定。
标签: java map bigdecimal comparable