当前位置: 首页 > 知识库问答 >
问题:

如何创建不同类型的HashMap并测试它们的相等性?[复制]

轩辕弘雅
2023-03-14

我有一个带有几个键和值的源JSON,我想取几个目标JSON,并检查它们是否是那个JSON的子集:目标JSON中的所有字段都出现在源JSON中,并保存相同的值。

为了实现这一点,我想在HashMap的值部分中放置几个不同类型的值,并在这些值上调用equals

图中有几种类型的值,我想接受一些键值对并检查是否

  1. 钥匙在地图上
  2. 该值与地图中的值相同。

这是我想用Java做的一个例子:

boolean isInMap(Map<String, Object> map, String key, Object value) {
    return map.containsKey(key) && map.get(key).equals(value);
}

这可能是一个XY问题,但我如何在Rust中做到这一点?

共有1个答案

丘普松
2023-03-14

这与@mcarton在Serde JSON库中所指的差不多,只是我使用了enum匹配,我不确定这是否更好。

enum Value {
    Str(String),
    Int(i32),
    // other value types
}

impl PartialEq for Value {
    fn eq(&self, other: &Value) -> bool {
        match *self {
            Value::Str(ref s1) => match *other {
                Value::Str(ref s2) => s1 == s2,
                _ => false
            },
            Value::Int(i1) => match *other {
                Value::Int(i2) => i1 == i2,
                _ => false
            },
            // other implementations
        }
    }
}

由于我需要支持比Serde中提供的类型更少的类型,并且我正在尝试Rust,所以我创建了自己的枚举,而不是使用Serde_json::Value

 类似资料:
  • 我使用一个Android库,它要求我创建两个类,每个类继承自不同的类 (具有公共基类) 现在我有这个代码: 我必须复制这个类来创建一个扩展,即使我的两个类共享完全相同的代码。 我简化了示例的代码,但重复可能很重要 我决定将代码放在这两个类之外的静态方法中,并在类重写的方法中调用它们,但我认为必须有一种更干净的方法来做到这一点。 你能帮我解决这个问题吗? 和都继承自。

  • 问题内容: 假设我有一个单元测试,想要比较两个复数对象是否相等。这些对象包含许多其他深层嵌套的对象。所有对象的类都有正确定义的方法。 这并不困难: 麻烦的是,如果对象不相等,那么您得到的只是一个失败,没有迹象表明对象图的哪一部分不匹配。调试它可能会很痛苦且令人沮丧。 我当前的方法是确保一切都实现了,然后像这样比较相等性: 由于像Eclipse这样的IDE具有一个特殊的可视化比较器,用于显示失败测试

  • 根据逻辑,我需要实现两个,如果它们以相同的“相对”顺序具有相同的元素,则它们被认为是相等的。 举个例子,以下一对列表被认为彼此相等: 只要遵守相对顺序,就可以认为它们是平等的。 作为反例,这两个不相等: 导致 和 交换到位。 所以,基本上我发现这很有挑战性,因为这不是顺序完全重要的情况,也不是顺序完全不重要的情况。在这种情况下,我会使用普通的< code>list1.equals(list2)方法

  • 昨天我问了以后,我试着把它说得更清楚。我想创建不同的托盘类型(ID),应该有一个不同的颜色。我的代理托盘有不同的颜色和参数ID。因此,我使用不同的id创建了dbase pallets_db(每个id应该有不同的颜色)。现在我想插入不同的托盘类型到不同的日期到我的源块。对于该任务,我有另一个dbase,名为arrivaltime,其中我有托盘类型ID、日期和托盘的数量,我想插入源。托盘类型ID和db

  • 我试着比较这个. txt 在我的班级档案里。java我使用此方法将txt的内容转换为字符串。 我使用这个测试来尝试文件。Java TestReadElements将该String与文件内容进行比较。当我在eclipse中使用JUnit或在Linux终端中使用build.xml时,测试失败。 我不知道问题在哪里(如果问题在build.xml或其他文件中)我已经改变了几个小时的小东西,我累了...这些

  • 我只是在做行人教程,我已经创建了走廊站 我创造了我自己的步行人口,叫做我的人 我创建了一个循环事件,试图在一个名为location.TXT的TXT文件中记录位置,在这个社区的一个人的帮助下,我做到了(问题链接:在TXT中存储行人代理位置)