首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查两个HashMap在锈蚀中是相同的?

如何检查两个HashMap在锈蚀中是相同的?
EN

Stack Overflow用户
提问于 2022-08-21 17:01:42
回答 1查看 227关注 0票数 1

我有两个HashMaps (游乐场):

代码语言:javascript
复制
let mut m1: HashMap<u8, usize, _> = HashMap::new();
m1.insert(1, 100);
m1.insert(2, 200);

let mut m2: HashMap<u8, usize, _> = HashMap::new();
m2.insert(2, 200);
m2.insert(1, 100);

如何检查m1m2两种映射是否相同?

所谓“相同”,我指的是满足以下条件的所有

  • 键的类型是一样的。
  • 值的类型是相同的。
  • 两个映射具有完全相同的密钥集。插入命令不重要。
  • 两个映射对于每个键都具有完全相同的值(即,对于每个现有的键m1.get(k) == m2.get(k) )。

就我测试的情况而言,只有m1 == m2可以工作。然而,这种行为保证了吗?我想要某种保证(因此我添加了#language-lawyer标记)。

我已经读过HashMap的正式文档了。

另外,HashSetVec怎么办?(我还读过他们的文件。)

EN

回答 1

Stack Overflow用户

发布于 2022-08-21 23:27:11

查看std库的源代码,您可以找到这些不同集合的PartialEq实现:

  • HashMap对所有键/值对进行迭代,并检查另一个映射是否有对应的键条目,然后检查这些值是否相等:来源
  • HashSet迭代键并检查另一组是否包含该键:来源
  • Vec实际上调用了底层片上的eq,它或者遍历每个值并比较它们:来源,或者在类型允许的情况下通过调用memcmp来源进行按位比较。

我不知道是否有这样的行为永远不会改变,但作为马厩,广泛使用的API,我没有看到他们改变,永远。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73436547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档