【发布时间】:2011-10-09 17:29:11
【问题描述】:
我想比较两个 Java Maps 通过一个简单的哈希。
每个对象都在不同的计算机上,因此通过网络发送散列会比发送整个对象进行比较更便宜。
例如,我有两个 HashMaps 的 ExampleClass
Map<String,ExampleClass> One=new ...;
Map<String,ExampleClass> Other=new ...;
我不需要确保所有元素都相等, 我相信哈希就足够了。
我正要在每一侧进行迭代并创建一个“自制哈希”,然后将其发送到网络以最后比较例如int 或其他东西。
如果每次从集合中添加或删除对象时都计算这个“哈希”会很棒,这样我就不用迭代整个对象了。我必须封装Map 的每个添加/删除。有没有这样的 Java 库?
【问题讨论】:
-
您是否在 Map 对象本身上尝试过 Object.hashCode()?
-
您需要对自己的答案有多大把握?如果您需要“好的”精度级别,这里提到的每个人都提到的 Object.hashCode 可能会很好,但是哈希冲突可能而且确实会发生!如果您需要更高级别的检测,您可以考虑使用加密哈希,例如 SHA-512。
-
Eric 我认为这就是真实性提出的答案@Steven“好的”准确性水平还可以=)它是为了使用网络地图保持本地地图更新(以预期临时(但更慢)更新以防哈希失败)
标签: java collections hash comparison compare